diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2014-03-20 21:10:51 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2014-03-30 19:18:51 -0400 |
commit | 38129a13e6e71f666e0468e99fdd932a687b4d7e (patch) | |
tree | 438e817fdf7d224f9fda1186eb24b1bbc37a4b5c /fs/mount.h | |
parent | 0b1b901b5a98bb36943d10820efc796f7cd45ff3 (diff) |
switch mnt_hash to hlist
fixes RCU bug - walking through hlist is safe in face of element moves,
since it's self-terminating. Cyclic lists are not - if we end up jumping
to another hash chain, we'll loop infinitely without ever hitting the
original list head.
[fix for dumb braino folded]
Spotted by: Max Kellermann <mk@cm4all.com>
Cc: stable@vger.kernel.org
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/mount.h')
-rw-r--r-- | fs/mount.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/mount.h b/fs/mount.h index acdb428de393..b29e42f05f34 100644 --- a/fs/mount.h +++ b/fs/mount.h | |||
@@ -25,7 +25,7 @@ struct mountpoint { | |||
25 | }; | 25 | }; |
26 | 26 | ||
27 | struct mount { | 27 | struct mount { |
28 | struct list_head mnt_hash; | 28 | struct hlist_node mnt_hash; |
29 | struct mount *mnt_parent; | 29 | struct mount *mnt_parent; |
30 | struct dentry *mnt_mountpoint; | 30 | struct dentry *mnt_mountpoint; |
31 | struct vfsmount mnt; | 31 | struct vfsmount mnt; |