aboutsummaryrefslogtreecommitdiffstats
path: root/fs/pnode.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2025-06-24 23:54:41 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2025-06-29 19:03:30 -0400
commitdd5a4e1d640bf3542c4583491e6b91d25de3b760 (patch)
tree519ad7e18c2feb0bc94e4cd4a95db053fff86919 /fs/pnode.c
parentmnt_slave_list/mnt_slave: turn into hlist_head/hlist_node (diff)
downloadlinux-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.c12
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)