staging/lustre/llite: Close atomic_open race with several openers
authorOleg Drokin <green@linuxhacker.ru>
Fri, 15 Jul 2016 03:40:21 +0000 (23:40 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 15 Aug 2016 16:25:10 +0000 (18:25 +0200)
commit99f1c013194e64d4b67d5d318148303b0e1585e1
treea47877fd40dd6ca0135b7ef3b18a15ba31906917
parent694d0d0bb2030d2e36df73e2d23d5770511dbc8d
staging/lustre/llite: Close atomic_open race with several openers

Right now, if it's an open of a negative dentry, a race is possible
with several openers who all try to instantiate/rehash the same
dentry and would hit a BUG_ON in d_add.
But in fact if we got a negative dentry in atomic_open, that means
we just revalidated it so no point in talking to MDS at all,
just return ENOENT and make the race go away completely.

Signed-off-by: Oleg Drokin <green@linuxhacker.ru>
Cc: stable <stable@vger.kernel.org> # 4.7+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/lustre/lustre/llite/namei.c