From: Al Viro Date: Sat, 16 Jan 2010 17:57:40 +0000 (-0500) Subject: attach_recursive_mnt() needs to hold vfsmount_lock over set_mnt_shared() X-Git-Tag: v2.6.33-rc5~25^2~3 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=df1a1ad29739f032f8905310796e558589403d61;p=~emulex%2Finfiniband.git attach_recursive_mnt() needs to hold vfsmount_lock over set_mnt_shared() race in mnt_flags update Signed-off-by: Al Viro --- diff --git a/fs/namespace.c b/fs/namespace.c index 461090a57b3..4de493ea67c 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -1354,12 +1354,12 @@ static int attach_recursive_mnt(struct vfsmount *source_mnt, if (err) goto out_cleanup_ids; + spin_lock(&vfsmount_lock); + if (IS_MNT_SHARED(dest_mnt)) { for (p = source_mnt; p; p = next_mnt(p, source_mnt)) set_mnt_shared(p); } - - spin_lock(&vfsmount_lock); if (parent_path) { detach_mnt(source_mnt, parent_path); attach_mnt(source_mnt, path);