affs_lookup(): close a race with affs_remove_link()
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 6 May 2018 16:15:20 +0000 (12:15 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 May 2018 05:50:16 +0000 (07:50 +0200)
commit5aba1dc0d56b399284845a33e59b2a8c4462e6ff
treea2351f651c18c962898777aff93a197fe8ddec58
parent211922cfb229d820edcff93113ff64129c14192d
affs_lookup(): close a race with affs_remove_link()

commit 30da870ce4a4e007c901858a96e9e394a1daa74a upstream.

we unlock the directory hash too early - if we are looking at secondary
link and primary (in another directory) gets removed just as we unlock,
we could have the old primary moved in place of the secondary, leaving
us to look into freed entry (and leaving our dentry with ->d_fsdata
pointing to a freed entry).

Cc: stable@vger.kernel.org # 2.4.4+
Acked-by: David Sterba <dsterba@suse.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/affs/namei.c