IB/mlx4: Fix mlx4_ib_add() error flow
authorJack Morgenstein <jackm@dev.mellanox.co.il>
Thu, 10 May 2012 20:28:09 +0000 (23:28 +0300)
committerRoland Dreier <roland@purestorage.com>
Sat, 19 May 2012 00:45:01 +0000 (17:45 -0700)
We need to use a different loop index for mlx4_counter_alloc() and for
device_create_file() iterations: the mlx4_counter_alloc() loop index
is used in the error flow to free counters.

If the same loop index is used for device_create_file() and, say, the
device_create_file() loop fails on the first iteration, the allocated
counters will not be freed.

Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/hw/mlx4/main.c

index 7dfa7866d5948a04bf933a86f1f02d1986d131cd..ee1c577238f7a261c4773c49372ad6ff2c304c0d 100644 (file)
@@ -1160,7 +1160,7 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
 {
        struct mlx4_ib_dev *ibdev;
        int num_ports = 0;
-       int i;
+       int i, j;
        int err;
        struct mlx4_ib_iboe *iboe;
 
@@ -1323,9 +1323,9 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
                        goto err_reg;
        }
 
-       for (i = 0; i < ARRAY_SIZE(mlx4_class_attributes); ++i) {
+       for (j = 0; j < ARRAY_SIZE(mlx4_class_attributes); ++j) {
                if (device_create_file(&ibdev->ib_dev.dev,
-                                      mlx4_class_attributes[i]))
+                                      mlx4_class_attributes[j]))
                        goto err_notif;
        }