2020-06-19 13:13:11

by Bo YU

[permalink] [raw]
Subject: [PATCH -next] RDMA/rtrs: fix potential resources leaks

Dev is returned from allocation function kzalloc but it does not
free it in out_err path.

Detected by CoverityScan, CID# 1464569: (Resource leak)

Fixes: c0894b3ea69d3("RDMA/rtrs: core: lib functions shared between client and server modules")
Signed-off-by: Bo YU <[email protected]>
---
drivers/infiniband/ulp/rtrs/rtrs.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/infiniband/ulp/rtrs/rtrs.c b/drivers/infiniband/ulp/rtrs/rtrs.c
index ff1093d6e4bc..03bdab92fa49 100644
--- a/drivers/infiniband/ulp/rtrs/rtrs.c
+++ b/drivers/infiniband/ulp/rtrs/rtrs.c
@@ -607,6 +607,7 @@ rtrs_ib_dev_find_or_add(struct ib_device *ib_dev,
else
kfree(dev);
out_err:
+ kfree(dev);
return NULL;
}
EXPORT_SYMBOL(rtrs_ib_dev_find_or_add);
--
2.11.0


2020-06-19 13:20:38

by Jinpu Wang

[permalink] [raw]
Subject: Re: [PATCH -next] RDMA/rtrs: fix potential resources leaks

Hi, Bo,
On Fri, Jun 19, 2020 at 3:10 PM Bo YU <[email protected]> wrote:
>
> Dev is returned from allocation function kzalloc but it does not
> free it in out_err path.
If allocation failed, kzalloc return NULL, nothing to free.
>
> Detected by CoverityScan, CID# 1464569: (Resource leak)
>
> Fixes: c0894b3ea69d3("RDMA/rtrs: core: lib functions shared between client and server modules")
> Signed-off-by: Bo YU <[email protected]>
> ---
> drivers/infiniband/ulp/rtrs/rtrs.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/infiniband/ulp/rtrs/rtrs.c b/drivers/infiniband/ulp/rtrs/rtrs.c
> index ff1093d6e4bc..03bdab92fa49 100644
> --- a/drivers/infiniband/ulp/rtrs/rtrs.c
> +++ b/drivers/infiniband/ulp/rtrs/rtrs.c
> @@ -607,6 +607,7 @@ rtrs_ib_dev_find_or_add(struct ib_device *ib_dev,
> else
> kfree(dev);
> out_err:
> + kfree(dev);
> return NULL;
> }
> EXPORT_SYMBOL(rtrs_ib_dev_find_or_add);
> --
> 2.11.0
>

2020-06-19 14:51:21

by Jason Gunthorpe

[permalink] [raw]
Subject: Re: [PATCH -next] RDMA/rtrs: fix potential resources leaks

On Fri, Jun 19, 2020 at 03:16:57PM +0200, Jinpu Wang wrote:
> Hi, Bo,
> On Fri, Jun 19, 2020 at 3:10 PM Bo YU <[email protected]> wrote:
> >
> > Dev is returned from allocation function kzalloc but it does not
> > free it in out_err path.
> If allocation failed, kzalloc return NULL, nothing to free.

You should re-organize this to not confuse coverity.

IS_ERR_OR_NULL should rarely be used and is the problem here

Jason