浏览代码

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>
Roland Dreier 18 年之前
父节点
当前提交
ee30cb5b0b
共有 1 个文件被更改,包括 3 次插入1 次删除
  1. 3 1
      drivers/infiniband/hw/amso1100/c2_provider.c

+ 3 - 1
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);
 	mr = kmalloc(sizeof(*mr), GFP_KERNEL);
-	if (!mr)
+	if (!mr) {
+		vfree(page_list);
 		return ERR_PTR(-ENOMEM);
 		return ERR_PTR(-ENOMEM);
+	}
 
 
 	mr->pd = to_c2pd(ib_pd);
 	mr->pd = to_c2pd(ib_pd);
 	pr_debug("%s - page shift %d, pbl_depth %d, total_len %u, "
 	pr_debug("%s - page shift %d, pbl_depth %d, total_len %u, "