mlx4_core: Clean up buddy bitmap allocation
authorRoland Dreier <roland@purestorage.com>
Tue, 14 Aug 2012 22:17:10 +0000 (15:17 -0700)
committerRoland Dreier <roland@purestorage.com>
Thu, 16 Aug 2012 04:05:27 +0000 (21:05 -0700)
 - Use kcalloc() / vzalloc() instead of an extra bitmap_zero().
 - Add __GFP_NOWARN to kcalloc() since we'll try vzalloc() if it fails.

Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/net/ethernet/mellanox/mlx4/mr.c

index 44b8e1e..c202d3a 100644 (file)
@@ -121,7 +121,7 @@ static int mlx4_buddy_init(struct mlx4_buddy *buddy, int max_order)
        buddy->max_order = max_order;
        spin_lock_init(&buddy->lock);
 
-       buddy->bits = kzalloc((buddy->max_order + 1) * sizeof (long *),
+       buddy->bits = kcalloc(buddy->max_order + 1, sizeof (long *),
                              GFP_KERNEL);
        buddy->num_free = kcalloc((buddy->max_order + 1), sizeof *buddy->num_free,
                                  GFP_KERNEL);
@@ -130,13 +130,12 @@ static int mlx4_buddy_init(struct mlx4_buddy *buddy, int max_order)
 
        for (i = 0; i <= buddy->max_order; ++i) {
                s = BITS_TO_LONGS(1 << (buddy->max_order - i));
-               buddy->bits[i] = kmalloc(s * sizeof (long), GFP_KERNEL);
+               buddy->bits[i] = kcalloc(s, sizeof (long), GFP_KERNEL | __GFP_NOWARN);
                if (!buddy->bits[i]) {
-                       buddy->bits[i] = vmalloc(s * sizeof(long));
+                       buddy->bits[i] = vzalloc(s * sizeof(long));
                        if (!buddy->bits[i])
                                goto err_out_free;
                }
-               bitmap_zero(buddy->bits[i], 1 << (buddy->max_order - i));
        }
 
        set_bit(0, buddy->bits[buddy->max_order]);