afs: Fix use-after-loss-of-ref
authorDavid Howells <dhowells@redhat.com>
Tue, 14 Jan 2020 16:16:25 +0000 (16:16 +0000)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 14 Jan 2020 17:40:06 +0000 (09:40 -0800)
commit40a708bd622b78582ae3d280de29b09b50bd04c0
tree2a359efe3c25cac13f68e7847925888fc160bc21
parent8379bb84be757d5df2d818509faec5d66adb861d
afs: Fix use-after-loss-of-ref

afs_lookup() has a tracepoint to indicate the outcome of
d_splice_alias(), passing it the inode to retrieve the fid from.
However, the function gave up its ref on that inode when it called
d_splice_alias(), which may have failed and dropped the inode.

Fix this by caching the fid.

Fixes: 80548b03991f ("afs: Add more tracepoints")
Reported-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/afs/dir.c
include/trace/events/afs.h