diff mbox series

ubifs: fix memory leak on error condition

Message ID 20181115203850.5774-1-garrmcnu@gmail.com
State Superseded
Headers show
Series ubifs: fix memory leak on error condition | expand

Commit Message

Garry McNulty Nov. 15, 2018, 8:38 p.m. UTC
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 <garrmcnu@gmail.com>
---
 fs/ubifs/lpt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Richard Weinberger Nov. 15, 2018, 9:42 p.m. UTC | #1
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 <garrmcnu@gmail.com>
> ---
>  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
Colin Ian King Nov. 15, 2018, 10:45 p.m. UTC | #2
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 <garrmcnu@gmail.com>
>> ---
>>  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
> 
>
diff mbox series

Patch

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;