aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/sw/siw/siw_main.c
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@oracle.com>2019-08-09 17:09:04 +0300
committerDoug Ledford <dledford@redhat.com>2019-08-12 10:59:36 -0400
commit17c19287ecf54fb55f155902dcd39c62a9547c4e (patch)
tree51a9ecba23f34cdde6b92de82410c1538a3bef44 /drivers/infiniband/sw/siw/siw_main.c
parentIB/mlx5: Fix use-after-free error while accessing ev_file pointer (diff)
downloadlinux-dev-17c19287ecf54fb55f155902dcd39c62a9547c4e.tar.xz
linux-dev-17c19287ecf54fb55f155902dcd39c62a9547c4e.zip
RDMA/siw: Fix a memory leak in siw_init_cpulist()
The error handling code doesn't free siw_cpu_info.tx_valid_cpus[0]. The first iteration through the loop is a no-op so this is sort of an off by one bug. Also Bernard pointed out that we can remove the NULL assignment and simplify the code a bit. Fixes: bdcf26bf9b3a ("rdma/siw: network and RDMA core interface") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Reviewed-by: Bernard Metzler <bmt@zurich.ibm.com> Reviewed-by: Bernard Metzler <bmt@zurich.ibm.com> Link: https://lore.kernel.org/r/20190809140904.GB3552@mwanda Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/sw/siw/siw_main.c')
-rw-r--r--drivers/infiniband/sw/siw/siw_main.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/infiniband/sw/siw/siw_main.c b/drivers/infiniband/sw/siw/siw_main.c
index d0f140daf659..05a92f997f60 100644
--- a/drivers/infiniband/sw/siw/siw_main.c
+++ b/drivers/infiniband/sw/siw/siw_main.c
@@ -160,10 +160,8 @@ static int siw_init_cpulist(void)
out_err:
siw_cpu_info.num_nodes = 0;
- while (i) {
+ while (--i >= 0)
kfree(siw_cpu_info.tx_valid_cpus[i]);
- siw_cpu_info.tx_valid_cpus[i--] = NULL;
- }
kfree(siw_cpu_info.tx_valid_cpus);
siw_cpu_info.tx_valid_cpus = NULL;