diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2025-06-24 23:54:41 -0400 |
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2025-06-29 19:03:30 -0400 |
| commit | dd5a4e1d640bf3542c4583491e6b91d25de3b760 (patch) | |
| tree | 519ad7e18c2feb0bc94e4cd4a95db053fff86919 /fs/pnode.c | |
| parent | mnt_slave_list/mnt_slave: turn into hlist_head/hlist_node (diff) | |
| download | linux-dd5a4e1d640bf3542c4583491e6b91d25de3b760.tar.gz linux-dd5a4e1d640bf3542c4583491e6b91d25de3b760.zip | |
change_mnt_propagation(): move ->mnt_master assignment into MS_SLAVE case
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/pnode.c')
| -rw-r--r-- | fs/pnode.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/fs/pnode.c b/fs/pnode.c index 69278079faeb..cbf5f5746252 100644 --- a/fs/pnode.c +++ b/fs/pnode.c @@ -104,13 +104,14 @@ static void transfer_propagation(struct mount *mnt, struct mount *to) */ void change_mnt_propagation(struct mount *mnt, int type) { + struct mount *m = mnt->mnt_master; + if (type == MS_SHARED) { set_mnt_shared(mnt); return; } if (IS_MNT_SHARED(mnt)) { - struct mount *m = propagation_source(mnt); - + m = propagation_source(mnt); if (list_empty(&mnt->mnt_share)) { mnt_release_group_id(mnt); } else { @@ -119,13 +120,12 @@ void change_mnt_propagation(struct mount *mnt, int type) } CLEAR_MNT_SHARED(mnt); transfer_propagation(mnt, m); - mnt->mnt_master = m; } hlist_del_init(&mnt->mnt_slave); if (type == MS_SLAVE) { - if (mnt->mnt_master) - hlist_add_head(&mnt->mnt_slave, - &mnt->mnt_master->mnt_slave_list); + mnt->mnt_master = m; + if (m) + hlist_add_head(&mnt->mnt_slave, &m->mnt_slave_list); } else { mnt->mnt_master = NULL; if (type == MS_UNBINDABLE) |
