Re: [PATCH] powerpc/spufs: Add rcu_read_lock() around fcheck()

From: Christoph Hellwig
Date: Thu May 07 2020 - 02:54:57 EST


On Wed, Apr 29, 2020 at 09:42:39PM +1000, Michael Ellerman wrote:
> Christoph Hellwig <hch@xxxxxx> writes:
> > On Tue, Apr 28, 2020 at 09:48:11PM +1000, Michael Ellerman wrote:
> >>
> >> This comes from fcheck_files() via fcheck().
> >>
> >> It's pretty clearly documented that fcheck() must be wrapped with
> >> rcu_read_lock(), so fix it.
> >
> > But for this to actually be useful you'd need the rcu read lock until
> > your are done with the file (or got a reference).
>
> Hmm OK. My reasoning was that we were done with the struct file, because
> we return the ctx that's hanging off the inode.
>
> + ctx = SPUFS_I(file_inode(file))->i_ctx;
>
> But I guess the lifetime of the ctx is not guaranteed if the file goes
> away.
>
> It looks like the only long lived reference on the ctx is the one
> taken in spufs_new_file() and dropped in spufs_evict_inode().
>
> So if we take a reference to the ctx with the RCU lock held we should be
> safe, I think. But I've definitely exhausted my spufs/vfs knowledge at
> this point.
>
> Something like below.

Looks reasonable.