2018-11-15 20:40:25

by Garry McNulty

[permalink] [raw]
Subject: [PATCH] ubifs: fix memory leak on error condition

If the call to ubifs_read_nnode() fails in ubifs_lpt_calc_hash() an
error is returned without freeing the memory allocated to 'buf'.
Jump to 'out' label to free allocated memory and return the error code.

Detected by CoverityScan, CID 1441025 ("Resource leak")

Signed-off-by: Garry McNulty <[email protected]>
---
fs/ubifs/lpt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/ubifs/lpt.c b/fs/ubifs/lpt.c
index d1d5e96350dd..c162459a1e02 100644
--- a/fs/ubifs/lpt.c
+++ b/fs/ubifs/lpt.c
@@ -1688,7 +1688,7 @@ int ubifs_lpt_calc_hash(struct ubifs_info *c, u8 *hash)
if (!c->nroot) {
err = ubifs_read_nnode(c, NULL, 0);
if (err)
- return err;
+ goto out;
}

cnode = (struct ubifs_cnode *)c->nroot;
--
2.14.5



2018-11-15 21:43:36

by Richard Weinberger

[permalink] [raw]
Subject: Re: [PATCH] ubifs: fix memory leak on error condition

Am Donnerstag, 15. November 2018, 21:38:50 CET schrieb Garry McNulty:
> If the call to ubifs_read_nnode() fails in ubifs_lpt_calc_hash() an
> error is returned without freeing the memory allocated to 'buf'.
> Jump to 'out' label to free allocated memory and return the error code.
>
> Detected by CoverityScan, CID 1441025 ("Resource leak")
>
> Signed-off-by: Garry McNulty <[email protected]>
> ---
> fs/ubifs/lpt.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/ubifs/lpt.c b/fs/ubifs/lpt.c
> index d1d5e96350dd..c162459a1e02 100644
> --- a/fs/ubifs/lpt.c
> +++ b/fs/ubifs/lpt.c
> @@ -1688,7 +1688,7 @@ int ubifs_lpt_calc_hash(struct ubifs_info *c, u8 *hash)
> if (!c->nroot) {
> err = ubifs_read_nnode(c, NULL, 0);
> if (err)
> - return err;
> + goto out;
> }
>
> cnode = (struct ubifs_cnode *)c->nroot;

Please see:
http://lists.infradead.org/pipermail/linux-mtd/2018-October/085081.html

If Colin won't send a v2, please do you so, then I'll take your v2.

Thanks,
//richard



2018-11-15 22:46:54

by Colin King

[permalink] [raw]
Subject: Re: [PATCH] ubifs: fix memory leak on error condition

On 15/11/2018 21:42, Richard Weinberger wrote:
> Am Donnerstag, 15. November 2018, 21:38:50 CET schrieb Garry McNulty:
>> If the call to ubifs_read_nnode() fails in ubifs_lpt_calc_hash() an
>> error is returned without freeing the memory allocated to 'buf'.
>> Jump to 'out' label to free allocated memory and return the error code.
>>
>> Detected by CoverityScan, CID 1441025 ("Resource leak")
>>
>> Signed-off-by: Garry McNulty <[email protected]>
>> ---
>> fs/ubifs/lpt.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/fs/ubifs/lpt.c b/fs/ubifs/lpt.c
>> index d1d5e96350dd..c162459a1e02 100644
>> --- a/fs/ubifs/lpt.c
>> +++ b/fs/ubifs/lpt.c
>> @@ -1688,7 +1688,7 @@ int ubifs_lpt_calc_hash(struct ubifs_info *c, u8 *hash)
>> if (!c->nroot) {
>> err = ubifs_read_nnode(c, NULL, 0);
>> if (err)
>> - return err;
>> + goto out;
>> }
>>
>> cnode = (struct ubifs_cnode *)c->nroot;
>
> Please see:
> http://lists.infradead.org/pipermail/linux-mtd/2018-October/085081.html
>
> If Colin won't send a v2, please do you so, then I'll take your v2.

Please take Garry's V2, sorry, I somehow overlooked doing a V2.

>
> Thanks,
> //richard
>
>