diff mbox series

mkfs: Fix memory leak

Message ID 20220524204040.954138-1-preichl@redhat.com (mailing list archive)
State Accepted
Headers show
Series mkfs: Fix memory leak | expand

Commit Message

Pavel Reichl May 24, 2022, 8:40 p.m. UTC
'value' is allocated by strup() in getstr(). It
needs to be freed as we do not keep any permanent
reference to it.

Signed-off-by: Pavel Reichl <preichl@redhat.com>
---
 mkfs/xfs_mkfs.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Darrick J. Wong May 24, 2022, 9:06 p.m. UTC | #1
On Tue, May 24, 2022 at 10:40:40PM +0200, Pavel Reichl wrote:
> 'value' is allocated by strup() in getstr(). It

Nit: strdup, not strup.

> needs to be freed as we do not keep any permanent
> reference to it.
> 
> Signed-off-by: Pavel Reichl <preichl@redhat.com>

With that fixed,
Reviewed-by: Darrick J. Wong <djwong@kernel.org>

--D

> ---
>  mkfs/xfs_mkfs.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
> index 01d2e8ca..a37d6848 100644
> --- a/mkfs/xfs_mkfs.c
> +++ b/mkfs/xfs_mkfs.c
> @@ -1714,6 +1714,7 @@ naming_opts_parser(
>  		} else {
>  			cli->sb_feat.dir_version = getnum(value, opts, subopt);
>  		}
> +		free((char *)value);
>  		break;
>  	case N_FTYPE:
>  		cli->sb_feat.dirftype = getnum(value, opts, subopt);
> -- 
> 2.36.1
>
Darrick J. Wong May 24, 2022, 9:08 p.m. UTC | #2
On Tue, May 24, 2022 at 02:06:44PM -0700, Darrick J. Wong wrote:
> On Tue, May 24, 2022 at 10:40:40PM +0200, Pavel Reichl wrote:
> > 'value' is allocated by strup() in getstr(). It
> 
> Nit: strdup, not strup.
> 
> > needs to be freed as we do not keep any permanent
> > reference to it.
> > 
> > Signed-off-by: Pavel Reichl <preichl@redhat.com>
> 
> With that fixed,
> Reviewed-by: Darrick J. Wong <djwong@kernel.org>
> 
> --D
> 
> > ---
> >  mkfs/xfs_mkfs.c | 1 +
> >  1 file changed, 1 insertion(+)
> > 
> > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
> > index 01d2e8ca..a37d6848 100644
> > --- a/mkfs/xfs_mkfs.c
> > +++ b/mkfs/xfs_mkfs.c
> > @@ -1714,6 +1714,7 @@ naming_opts_parser(
> >  		} else {
> >  			cli->sb_feat.dir_version = getnum(value, opts, subopt);
> >  		}
> > +		free((char *)value);

...well, that, and the ^^^^ cast here isn't necessary.

--D

> >  		break;
> >  	case N_FTYPE:
> >  		cli->sb_feat.dirftype = getnum(value, opts, subopt);
> > -- 
> > 2.36.1
> >
Pavel Reichl May 24, 2022, 9:13 p.m. UTC | #3
On 5/24/22 23:08, Darrick J. Wong wrote:
> On Tue, May 24, 2022 at 02:06:44PM -0700, Darrick J. Wong wrote:
>> On Tue, May 24, 2022 at 10:40:40PM +0200, Pavel Reichl wrote:
>>> 'value' is allocated by strup() in getstr(). It
>> Nit: strdup, not strup.
>>
>>> needs to be freed as we do not keep any permanent
>>> reference to it.
>>>
>>> Signed-off-by: Pavel Reichl <preichl@redhat.com>
>> With that fixed,
>> Reviewed-by: Darrick J. Wong <djwong@kernel.org>
>>
>> --D
>>
>>> ---
>>>   mkfs/xfs_mkfs.c | 1 +
>>>   1 file changed, 1 insertion(+)
>>>
>>> diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
>>> index 01d2e8ca..a37d6848 100644
>>> --- a/mkfs/xfs_mkfs.c
>>> +++ b/mkfs/xfs_mkfs.c
>>> @@ -1714,6 +1714,7 @@ naming_opts_parser(
>>>   		} else {
>>>   			cli->sb_feat.dir_version = getnum(value, opts, subopt);
>>>   		}
>>> +		free((char *)value);
> ...well, that, and the ^^^^ cast here isn't necessary.
>
> --D

Hi,

thanks for the comment, but w/o the cast I get this warning

xfs_mkfs.c:1717:22: warning: passing argument 1 of ‘free’ discards 
‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
  1717 |                 free(value);
       |                      ^~~~~
In file included from ../include/platform_defs.h:16,
                  from ../include/libxfs.h:11,
                  from xfs_mkfs.c:7:
/usr/include/stdlib.h:555:25: note: expected ‘void *’ but argument is of 
type ‘const char *’
   555 | extern void free (void *__ptr) __THROW;

>
>>>   		break;
>>>   	case N_FTYPE:
>>>   		cli->sb_feat.dirftype = getnum(value, opts, subopt);
>>> -- 
>>> 2.36.1
>>>
Darrick J. Wong May 24, 2022, 9:27 p.m. UTC | #4
On Tue, May 24, 2022 at 11:13:01PM +0200, Pavel Reichl wrote:
> 
> On 5/24/22 23:08, Darrick J. Wong wrote:
> > On Tue, May 24, 2022 at 02:06:44PM -0700, Darrick J. Wong wrote:
> > > On Tue, May 24, 2022 at 10:40:40PM +0200, Pavel Reichl wrote:
> > > > 'value' is allocated by strup() in getstr(). It
> > > Nit: strdup, not strup.
> > > 
> > > > needs to be freed as we do not keep any permanent
> > > > reference to it.
> > > > 
> > > > Signed-off-by: Pavel Reichl <preichl@redhat.com>
> > > With that fixed,
> > > Reviewed-by: Darrick J. Wong <djwong@kernel.org>
> > > 
> > > --D
> > > 
> > > > ---
> > > >   mkfs/xfs_mkfs.c | 1 +
> > > >   1 file changed, 1 insertion(+)
> > > > 
> > > > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
> > > > index 01d2e8ca..a37d6848 100644
> > > > --- a/mkfs/xfs_mkfs.c
> > > > +++ b/mkfs/xfs_mkfs.c
> > > > @@ -1714,6 +1714,7 @@ naming_opts_parser(
> > > >   		} else {
> > > >   			cli->sb_feat.dir_version = getnum(value, opts, subopt);
> > > >   		}
> > > > +		free((char *)value);
> > ...well, that, and the ^^^^ cast here isn't necessary.
> > 
> > --D
> 
> Hi,
> 
> thanks for the comment, but w/o the cast I get this warning
> 
> xfs_mkfs.c:1717:22: warning: passing argument 1 of ‘free’ discards ‘const’
> qualifier from pointer target type [-Wdiscarded-qualifiers]
>  1717 |                 free(value);
>       |                      ^~~~~
> In file included from ../include/platform_defs.h:16,
>                  from ../include/libxfs.h:11,
>                  from xfs_mkfs.c:7:
> /usr/include/stdlib.h:555:25: note: expected ‘void *’ but argument is of
> type ‘const char *’
>   555 | extern void free (void *__ptr) __THROW;

Ah, ok.  Ignore my comment then. :)

--D

> 
> > 
> > > >   		break;
> > > >   	case N_FTYPE:
> > > >   		cli->sb_feat.dirftype = getnum(value, opts, subopt);
> > > > -- 
> > > > 2.36.1
> > > > 
>
diff mbox series

Patch

diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
index 01d2e8ca..a37d6848 100644
--- a/mkfs/xfs_mkfs.c
+++ b/mkfs/xfs_mkfs.c
@@ -1714,6 +1714,7 @@  naming_opts_parser(
 		} else {
 			cli->sb_feat.dir_version = getnum(value, opts, subopt);
 		}
+		free((char *)value);
 		break;
 	case N_FTYPE:
 		cli->sb_feat.dirftype = getnum(value, opts, subopt);