X-Git-Url: http://git.monstr.eu/?a=blobdiff_plain;f=fs%2Fnamespace.c;h=d3fb9f00576e2a2e8c431b5936b4b3b571a74e7a;hb=0b1b901b5a98bb36943d10820efc796f7cd45ff3;hp=9db3ce397a838bf9e52af3c2a00528bd07935727;hpb=1d6a32acd70ab18499829c0a9a5dbe2bace72a13;p=linux-2.6-microblaze.git diff --git a/fs/namespace.c b/fs/namespace.c index 9db3ce397a83..d3fb9f00576e 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -1653,16 +1653,14 @@ static int attach_recursive_mnt(struct mount *source_mnt, err = invent_group_ids(source_mnt, true); if (err) goto out; - } - err = propagate_mnt(dest_mnt, dest_mp, source_mnt, &tree_list); - if (err) - goto out_cleanup_ids; - - lock_mount_hash(); - - if (IS_MNT_SHARED(dest_mnt)) { + err = propagate_mnt(dest_mnt, dest_mp, source_mnt, &tree_list); + if (err) + goto out_cleanup_ids; + lock_mount_hash(); for (p = source_mnt; p; p = next_mnt(p, source_mnt)) set_mnt_shared(p); + } else { + lock_mount_hash(); } if (parent_path) { detach_mnt(source_mnt, parent_path); @@ -1685,8 +1683,7 @@ static int attach_recursive_mnt(struct mount *source_mnt, return 0; out_cleanup_ids: - if (IS_MNT_SHARED(dest_mnt)) - cleanup_group_ids(source_mnt, NULL); + cleanup_group_ids(source_mnt, NULL); out: return err; }