2019-09-26 09:38:39

by Navid Emamdoost

[permalink] [raw]
Subject: [PATCH] IB/hfi1: prevent memory leak in sdma_init

In sdma_init if rhashtable_init fails the allocated memory for
tmp_sdma_rht should be released.

Signed-off-by: Navid Emamdoost <[email protected]>
---
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);
--
2.17.1


2019-09-26 11:51:18

by Dennis Dalessandro

[permalink] [raw]
Subject: Re: [PATCH] IB/hfi1: prevent memory leak in sdma_init

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 <[email protected]>
> ---
> 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 <[email protected]>