diff options
author | Jack Morgenstein <jackm@mellanox.co.il> | 2006-01-12 18:35:15 -0500 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2006-01-12 18:35:15 -0500 |
commit | 17e2e819517d75f2f3407e59c5f7f6f0ef305d14 (patch) | |
tree | be0be0430b4650a01fa51d0f00a59c95d41384ca /drivers/infiniband | |
parent | 59f174faffd5dfee709fa0ead320cc6daf827e93 (diff) |
IB/mthca: Fix memory leaks in error handling
Fix memory leaks in mthca_create_qp() and mthca_create_srq()
error handling.
Signed-off-by: Jack Morgenstein <jackm@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r-- | drivers/infiniband/hw/mthca/mthca_provider.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c b/drivers/infiniband/hw/mthca/mthca_provider.c index db35690c91de..484a7e6b7f8c 100644 --- a/drivers/infiniband/hw/mthca/mthca_provider.c +++ b/drivers/infiniband/hw/mthca/mthca_provider.c | |||
@@ -445,8 +445,10 @@ static struct ib_srq *mthca_create_srq(struct ib_pd *pd, | |||
445 | if (pd->uobject) { | 445 | if (pd->uobject) { |
446 | context = to_mucontext(pd->uobject->context); | 446 | context = to_mucontext(pd->uobject->context); |
447 | 447 | ||
448 | if (ib_copy_from_udata(&ucmd, udata, sizeof ucmd)) | 448 | if (ib_copy_from_udata(&ucmd, udata, sizeof ucmd)) { |
449 | return ERR_PTR(-EFAULT); | 449 | err = -EFAULT; |
450 | goto err_free; | ||
451 | } | ||
450 | 452 | ||
451 | err = mthca_map_user_db(to_mdev(pd->device), &context->uar, | 453 | err = mthca_map_user_db(to_mdev(pd->device), &context->uar, |
452 | context->db_tab, ucmd.db_index, | 454 | context->db_tab, ucmd.db_index, |
@@ -522,8 +524,10 @@ static struct ib_qp *mthca_create_qp(struct ib_pd *pd, | |||
522 | if (pd->uobject) { | 524 | if (pd->uobject) { |
523 | context = to_mucontext(pd->uobject->context); | 525 | context = to_mucontext(pd->uobject->context); |
524 | 526 | ||
525 | if (ib_copy_from_udata(&ucmd, udata, sizeof ucmd)) | 527 | if (ib_copy_from_udata(&ucmd, udata, sizeof ucmd)) { |
528 | kfree(qp); | ||
526 | return ERR_PTR(-EFAULT); | 529 | return ERR_PTR(-EFAULT); |
530 | } | ||
527 | 531 | ||
528 | err = mthca_map_user_db(to_mdev(pd->device), &context->uar, | 532 | err = mthca_map_user_db(to_mdev(pd->device), &context->uar, |
529 | context->db_tab, | 533 | context->db_tab, |