namei: d_is_negative() should be checked before ->d_seq validation
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 7 May 2015 23:24:57 +0000 (19:24 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Sat, 9 May 2015 04:12:35 +0000 (00:12 -0400)
commit766c4cbfacd8634d7580bac6a1b8456e63de3e84
tree0bdde729de49ac95858f5429b40419b643fcc1cb
parent5ebe6afaf0057ac3eaeb98defd5456894b446d22
namei: d_is_negative() should be checked before ->d_seq validation

Fetching ->d_inode, verifying ->d_seq and finding d_is_negative() to
be true does *not* mean that inode we'd fetched had been NULL - that
holds only while ->d_seq is still unchanged.

Shift d_is_negative() checks into lookup_fast() prior to ->d_seq
verification.

Reported-by: Steven Rostedt <rostedt@goodmis.org>
Tested-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/namei.c