diff options
author | Roland Dreier <rolandd@cisco.com> | 2006-09-28 10:44:07 -0700 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2006-09-28 10:44:07 -0700 |
commit | ee30cb5b0b65392843cc3beaba48160ee4a3764e (patch) | |
tree | c996c2327d3986d2a06e3a1352aa8774394aadca | |
parent | 44334bd97e76662c5f40c629357e6acc4dee3e8a (diff) | |
download | op-kernel-dev-ee30cb5b0b65392843cc3beaba48160ee4a3764e.zip op-kernel-dev-ee30cb5b0b65392843cc3beaba48160ee4a3764e.tar.gz |
RDMA/amso1100: Fix memory leak in c2_reg_phys_mr()
If the allocation of mr fails, then c2_reg_phys_mr() leaks the
page_list array it allocated earlier.
This was Coverity CID #1413.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r-- | drivers/infiniband/hw/amso1100/c2_provider.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/amso1100/c2_provider.c b/drivers/infiniband/hw/amso1100/c2_provider.c index 622d6f1..da98d9f 100644 --- a/drivers/infiniband/hw/amso1100/c2_provider.c +++ b/drivers/infiniband/hw/amso1100/c2_provider.c @@ -390,8 +390,10 @@ static struct ib_mr *c2_reg_phys_mr(struct ib_pd *ib_pd, } mr = kmalloc(sizeof(*mr), GFP_KERNEL); - if (!mr) + if (!mr) { + vfree(page_list); return ERR_PTR(-ENOMEM); + } mr->pd = to_c2pd(ib_pd); pr_debug("%s - page shift %d, pbl_depth %d, total_len %u, " |