summaryrefslogtreecommitdiffstats
path: root/fs/mount.h
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2014-03-21 02:10:51 +0100
committerAl Viro <viro@zeniv.linux.org.uk>2014-03-31 01:18:51 +0200
commit38129a13e6e71f666e0468e99fdd932a687b4d7e (patch)
tree438e817fdf7d224f9fda1186eb24b1bbc37a4b5c /fs/mount.h
parentdon't bother with propagate_mnt() unless the target is shared (diff)
downloadlinux-38129a13e6e71f666e0468e99fdd932a687b4d7e.tar.xz
linux-38129a13e6e71f666e0468e99fdd932a687b4d7e.zip
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.h2
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 {
};
struct mount {
- struct list_head mnt_hash;
+ struct hlist_node mnt_hash;
struct mount *mnt_parent;
struct dentry *mnt_mountpoint;
struct vfsmount mnt;