Re: NFS/d_splice_alias breakage

From: Al Viro
Date: Mon Jun 20 2016 - 11:28:58 EST


On Mon, Jun 20, 2016 at 02:54:36PM +0000, Trond Myklebust wrote:
>
> > On Jun 20, 2016, at 10:08, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote:
> >
> > On Mon, Jun 20, 2016 at 09:25:12AM -0400, Oleg Drokin wrote:
> >> It looks like this patch was totally forgotten?
> >> I don't see it in neither vfs nor nfs trees and yet it fixes a very easy to cause
> >> crash in nfs code. And I think it's unrelated to the other parallel case too.
> >
> > I assumed it would go through NFS tree, seeing that it's NFS-specific and
> > has nothing to do with any of the recent VFS changes (oops is triggerable
> > starting from 3.11); I can certainly put it through vfs.git, and there
> > will be changes nearby, but this one should go into -stable as a separate
> > patch.
> >
>
> Iâll take it through the NFS tree.

OK. It's really a -stable fodder, BTW - all you need to trigger that oops is
a hashed negative dentry from earlier lookup + symlink created from another
client + attempt to open from ours. Gets you d_splice_alias() (or
d_materialise_unique() prior to 3.19) with hashed dentry and that triggers
BUG_ON, leaving us with the parent directory locked.