aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2022-12-12 18:36:12 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2022-12-12 18:36:12 -0800
commit13c574fec815f449fa812df60844bbb4b1548d19 (patch)
tree7933f0630352c23f37da962c98f09b96c46ceef2
parent75f4d9af8b67d7415afe50afcb4e96fd0bbd3ae2 (diff)
parent61d8e42667716f71f2c26e327e66f2940d809f80 (diff)
downloadlinux-13c574fec815f449fa812df60844bbb4b1548d19.tar.gz
Merge tag 'pull-namespace' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull namespace fix from Al Viro: "Fix weird corner case in copy_mnt_ns()" * tag 'pull-namespace' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: copy_mnt_ns(): handle a corner case (overmounted mntns bindings) saner
-rw-r--r--fs/namespace.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/namespace.c b/fs/namespace.c
index df137ba19d375..c80f422084eb0 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -3515,8 +3515,9 @@ struct mnt_namespace *copy_mnt_ns(unsigned long flags, struct mnt_namespace *ns,
q = next_mnt(q, new);
if (!q)
break;
+ // an mntns binding we'd skipped?
while (p->mnt.mnt_root != q->mnt.mnt_root)
- p = next_mnt(p, old);
+ p = next_mnt(skip_mnt_tree(p), old);
}
namespace_unlock();