[openib-general] [PATCH] mthca: error handling fixes
Michael S. Tsirkin
mst at mellanox.co.il
Thu Dec 22 05:11:05 PST 2005
Fix memory leaks in error handling on multicast group operations.
Signed-off-by: Jack Morgenstein <jackm at mellanox.co.il>
Signed-off-by: Michael S. Tsirkin <mst at mellanox.co.il>
Index: latest/drivers/infiniband/hw/mthca/mthca_mcg.c
===================================================================
--- latest.orig/drivers/infiniband/hw/mthca/mthca_mcg.c
+++ latest/drivers/infiniband/hw/mthca/mthca_mcg.c
@@ -109,7 +109,8 @@ static int find_mgm(struct mthca_dev *de
goto out;
if (status) {
mthca_err(dev, "READ_MGM returned status %02x\n", status);
- return -EINVAL;
+ err = -EINVAL;
+ goto out;
}
if (!memcmp(mgm->gid, zero_gid, 16)) {
@@ -151,8 +152,10 @@ int mthca_multicast_attach(struct ib_qp
return PTR_ERR(mailbox);
mgm = mailbox->buf;
- if (down_interruptible(&dev->mcg_table.sem))
- return -EINTR;
+ if (down_interruptible(&dev->mcg_table.sem)) {
+ err = -EINTR;
+ goto err_sem;
+ }
err = find_mgm(dev, gid->raw, mailbox, &hash, &prev, &index);
if (err)
@@ -233,6 +236,7 @@ int mthca_multicast_attach(struct ib_qp
out:
up(&dev->mcg_table.sem);
+ err_sem:
mthca_free_mailbox(dev, mailbox);
return err;
}
@@ -253,8 +257,10 @@ int mthca_multicast_detach(struct ib_qp
return PTR_ERR(mailbox);
mgm = mailbox->buf;
- if (down_interruptible(&dev->mcg_table.sem))
- return -EINTR;
+ if (down_interruptible(&dev->mcg_table.sem)) {
+ err = -EINTR;
+ goto err_sem;
+ }
err = find_mgm(dev, gid->raw, mailbox, &hash, &prev, &index);
if (err)
@@ -356,6 +362,7 @@ int mthca_multicast_detach(struct ib_qp
out:
up(&dev->mcg_table.sem);
+ err_sem:
mthca_free_mailbox(dev, mailbox);
return err;
}
--
MST
More information about the general
mailing list