[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160603032853.GK14480@ZenIV.linux.org.uk>
Date: Fri, 3 Jun 2016 04:28:53 +0100
From: Al Viro <viro@...IV.linux.org.uk>
To: Trond Myklebust <trondmy@...marydata.com>
Cc: Oleg Drokin <green@...uxhacker.ru>,
"J. Bruce Fields" <bfields@...hat.com>,
"linux-nfs@...r.kernel.org" <linux-nfs@...r.kernel.org>,
"<linux-kernel@...r.kernel.org> Mailing List"
<linux-kernel@...r.kernel.org>,
"<linux-fsdevel@...r.kernel.org>" <linux-fsdevel@...r.kernel.org>
Subject: Re: NFS/d_splice_alias breakage
On Fri, Jun 03, 2016 at 12:44:51AM +0000, Trond Myklebust wrote:
> That would have to be a really tight race, since the code in _nfs4_open_and_get_state() currently reads:
>
> d_drop(dentry);
> alias = d_exact_alias(dentry, state->inode);
> if (!alias)
> alias = d_splice_alias(igrab(state->inode), dentry);
>
> IOW: something would have to be acting between the d_drop() and d_splice_alias() above...
How? dentry is
* negative (it would better be, or we are _really_ fucked)
* unhashed
How does whoever's rehashing it stumble across that thing?
Powered by blists - more mailing lists