We returned a freed value instead of NULL on certain error paths.
Complicated error handling generally more error prone, so I've tried
to simplify it a little by removing some gotos.

Signed-off-by: Dan Carpenter <[email protected]>

diff --git a/drivers/infiniband/ulp/srpt/ib_srpt.c 
b/drivers/infiniband/ulp/srpt/ib_srpt.c
index 1c29679..937b4bc 100644
--- a/drivers/infiniband/ulp/srpt/ib_srpt.c
+++ b/drivers/infiniband/ulp/srpt/ib_srpt.c
@@ -680,21 +680,20 @@ static struct srpt_ioctx **srpt_alloc_ioctx_ring(struct 
srpt_device *sdev,
 
        ring = kmalloc(ring_size * sizeof(ring[0]), GFP_KERNEL);
        if (!ring)
-               goto out;
+               return NULL;
        for (i = 0; i < ring_size; ++i) {
                ring[i] = srpt_alloc_ioctx(sdev, ioctx_size, dma_size, dir);
                if (!ring[i])
                        goto err;
                ring[i]->index = i;
        }
-       goto out;
+       return ring;
 
 err:
        while (--i >= 0)
                srpt_free_ioctx(sdev, ring[i], dma_size, dir);
        kfree(ring);
-out:
-       return ring;
+       return NULL;
 }
 
 /**
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to