diff mbox series

IB/hfi1: prevent memory leak in sdma_init

Message ID 20190925144543.10141-1-navid.emamdoost@gmail.com (mailing list archive)
State Superseded
Delegated to: Jason Gunthorpe
Headers show
Series IB/hfi1: prevent memory leak in sdma_init | expand

Commit Message

Navid Emamdoost Sept. 25, 2019, 2:45 p.m. UTC
In sdma_init if rhashtable_init fails the allocated memory for
tmp_sdma_rht should be released.

Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
---
 drivers/infiniband/hw/hfi1/sdma.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Dennis Dalessandro Sept. 26, 2019, 11:49 a.m. UTC | #1
On 9/25/2019 10:45 AM, Navid Emamdoost wrote:
> In sdma_init if rhashtable_init fails the allocated memory for
> tmp_sdma_rht should be released.
> 
> Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
> ---
>   drivers/infiniband/hw/hfi1/sdma.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/infiniband/hw/hfi1/sdma.c b/drivers/infiniband/hw/hfi1/sdma.c
> index 2395fd4233a7..2ed7bfd5feea 100644
> --- a/drivers/infiniband/hw/hfi1/sdma.c
> +++ b/drivers/infiniband/hw/hfi1/sdma.c
> @@ -1526,8 +1526,11 @@ int sdma_init(struct hfi1_devdata *dd, u8 port)
>   	}
>   
>   	ret = rhashtable_init(tmp_sdma_rht, &sdma_rht_params);
> -	if (ret < 0)
> +	if (ret < 0) {
> +		kfree(tmp_sdma_rht);
>   		goto bail;
> +	}
> +
>   	dd->sdma_rht = tmp_sdma_rht;
>   
>   	dd_dev_info(dd, "SDMA num_sdma: %u\n", dd->num_sdma);
> 

Yeah looks like a problem to me, thanks.

Acked-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
diff mbox series

Patch

diff --git a/drivers/infiniband/hw/hfi1/sdma.c b/drivers/infiniband/hw/hfi1/sdma.c
index 2395fd4233a7..2ed7bfd5feea 100644
--- a/drivers/infiniband/hw/hfi1/sdma.c
+++ b/drivers/infiniband/hw/hfi1/sdma.c
@@ -1526,8 +1526,11 @@  int sdma_init(struct hfi1_devdata *dd, u8 port)
 	}
 
 	ret = rhashtable_init(tmp_sdma_rht, &sdma_rht_params);
-	if (ret < 0)
+	if (ret < 0) {
+		kfree(tmp_sdma_rht);
 		goto bail;
+	}
+
 	dd->sdma_rht = tmp_sdma_rht;
 
 	dd_dev_info(dd, "SDMA num_sdma: %u\n", dd->num_sdma);