OSDN Git Service

ecryptfs_lookup_interpose(): lower_dentry->d_inode is not stable
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 3 Nov 2019 18:45:04 +0000 (13:45 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 22 Nov 2019 13:43:19 +0000 (14:43 +0100)
commit9d5f8aa57cf42933b39d59aba6cbcf57d7461db5
tree1331e1d0ad0d3a0dabd04e0fc0fc402c6579d24d
parent955b3a51a47c8941b7f38e4358e64545cf921815
ecryptfs_lookup_interpose(): lower_dentry->d_inode is not stable

commit e72b9dd6a5f17d0fb51f16f8685f3004361e83d0 upstream.

lower_dentry can't go from positive to negative (we have it pinned),
but it *can* go from negative to positive.  So fetching ->d_inode
into a local variable, doing a blocking allocation, checking that
now ->d_inode is non-NULL and feeding the value we'd fetched
earlier to a function that won't accept NULL is not a good idea.

Cc: stable@vger.kernel.org
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/ecryptfs/inode.c