lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20240308083415.640fe691@canb.auug.org.au>
Date: Fri, 8 Mar 2024 08:34:15 +1100
From: Stephen Rothwell <sfr@...b.auug.org.au>
To: Miklos Szeredi <miklos@...redi.hu>
Cc: Stephen Rothwell <sfr@...b.auug.org.au>, Al Viro
 <viro@...iv.linux.org.uk>, Alessio Balsini <balsini@...roid.com>, Amir
 Goldstein <amir73il@...il.com>, Linux Kernel Mailing List
 <linux-kernel@...r.kernel.org>, Linux Next Mailing List
 <linux-next@...r.kernel.org>, Miklos Szeredi <mszeredi@...hat.com>
Subject: Re: linux-next: manual merge of the fuse tree with Linus' tree

Hi Miklos,

On Thu, 7 Mar 2024 15:16:00 +0100 Miklos Szeredi <miklos@...redi.hu> wrote:
>
> On Wed, 6 Mar 2024 at 00:34, Stephen Rothwell <sfr@...b.auug.org.au> wrote:
> 
> > diff --cc fs/fuse/inode.c
> > index 516ea2979a90,02869edf72f3..000000000000
> > --- a/fs/fuse/inode.c
> > +++ b/fs/fuse/inode.c
> > @@@ -930,14 -942,6 +942,16 @@@ void fuse_conn_init(struct fuse_conn *f
> >   }
> >   EXPORT_SYMBOL_GPL(fuse_conn_init);
> >
> >  +static void delayed_release(struct rcu_head *p)
> >  +{
> >  +      struct fuse_conn *fc = container_of(p, struct fuse_conn, rcu);
> >  +
> >  +      put_user_ns(fc->user_ns);
> > ++      if (IS_ENABLED(CONFIG_FUSE_PASSTHROUGH))
> > ++              fuse_backing_files_free(fc);
> >  +      fc->release(fc);
> >  +}
> >  +  
> 
> fuse_backing_files_free() doesn't need to be called after an RCU
> delay, so it should be resolved like this:
> 
> diff --cc fs/fuse/inode.c
> index 516ea2979a90,02869edf72f3..000000000000
> --- a/fs/fuse/inode.c
> +++ b/fs/fuse/inode.c
> @@@ -954,7 -959,9 +966,9 @@@ void fuse_conn_put(struct fuse_conn *fc
>                         WARN_ON(atomic_read(&bucket->count) != 1);
>                         kfree(bucket);
>                 }
> +               if (IS_ENABLED(CONFIG_FUSE_PASSTHROUGH))
> +                       fuse_backing_files_free(fc);
>  -              fc->release(fc);
>  +              call_rcu(&fc->rcu, delayed_release);
>         }
>   }
>   EXPORT_SYMBOL_GPL(fuse_conn_put);

Thanks, I will do that from today.

-- 
Cheers,
Stephen Rothwell

Content of type "application/pgp-signature" skipped

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ