Commit df1a1ad2 authored by Al Viro's avatar Al Viro

attach_recursive_mnt() needs to hold vfsmount_lock over set_mnt_shared()

race in mnt_flags update
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 8ad08d8a
...@@ -1354,12 +1354,12 @@ static int attach_recursive_mnt(struct vfsmount *source_mnt, ...@@ -1354,12 +1354,12 @@ static int attach_recursive_mnt(struct vfsmount *source_mnt,
if (err) if (err)
goto out_cleanup_ids; goto out_cleanup_ids;
spin_lock(&vfsmount_lock);
if (IS_MNT_SHARED(dest_mnt)) { if (IS_MNT_SHARED(dest_mnt)) {
for (p = source_mnt; p; p = next_mnt(p, source_mnt)) for (p = source_mnt; p; p = next_mnt(p, source_mnt))
set_mnt_shared(p); set_mnt_shared(p);
} }
spin_lock(&vfsmount_lock);
if (parent_path) { if (parent_path) {
detach_mnt(source_mnt, parent_path); detach_mnt(source_mnt, parent_path);
attach_mnt(source_mnt, path); attach_mnt(source_mnt, path);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment