2022-04-22 09:01:02

by Nikolay Borisov

[permalink] [raw]
Subject: Re: [PATCH] btrfs: Fix a memory leak in btrfs_ioctl_balance()

<snip>

>
> Actually to simplify further:
>
> diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
> index 7a6974e877f4..bbda55d41a06 100644
> --- a/fs/btrfs/ioctl.c
> +++ b/fs/btrfs/ioctl.c
> @@ -4353,6 +4353,7 @@ static long btrfs_ioctl_balance(struct file *file,
> void __user *arg)
>         bargs = memdup_user(arg, sizeof(*bargs));
>         if (IS_ERR(bargs)) {
>                 ret = PTR_ERR(bargs);
> +               bargs = NULL;
>                 goto out;
>         }

Unf, this also leads to the double free ...

<snip>


2022-04-22 21:39:12

by David Sterba

[permalink] [raw]
Subject: Re: [PATCH] btrfs: Fix a memory leak in btrfs_ioctl_balance()

On Thu, Apr 21, 2022 at 02:34:47PM +0300, Nikolay Borisov wrote:
> <snip>
>
> >
> > Actually to simplify further:
> >
> > diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
> > index 7a6974e877f4..bbda55d41a06 100644
> > --- a/fs/btrfs/ioctl.c
> > +++ b/fs/btrfs/ioctl.c
> > @@ -4353,6 +4353,7 @@ static long btrfs_ioctl_balance(struct file *file,
> > void __user *arg)
> > ??????? bargs = memdup_user(arg, sizeof(*bargs));
> > ??????? if (IS_ERR(bargs)) {
> > ??????????????? ret = PTR_ERR(bargs);
> > +?????????????? bargs = NULL;
> > ??????????????? goto out;
> > ??????? }
>
> Unf, this also leads to the double free ...

Please send me an incremental diff that I can fold to the patch, thanks.