linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] fs/namespace: fix unprivileged mount propagation
@ 2019-06-17 18:47 Christian Brauner
  2019-06-17 18:50 ` Linus Torvalds
  0 siblings, 1 reply; 4+ messages in thread
From: Christian Brauner @ 2019-06-17 18:47 UTC (permalink / raw)
  To: viro, torvalds, ebiederm
  Cc: linux-kernel, linux-fsdevel, Christian Brauner, stable

When propagating mounts across mount namespaces owned by different user
namespaces it is not possible anymore to move or umount the mount in the
less privileged mount namespace.

Here is a reproducer:

  sudo mount -t tmpfs tmpfs /mnt
  sudo --make-rshared /mnt

  # create unprivileged user + mount namespace and preserve propagation
  unshare -U -m --map-root --propagation=unchanged

  # now change back to the original mount namespace in another terminal:
  sudo mkdir /mnt/aaa
  sudo mount -t tmpfs tmpfs /mnt/aaa

  # now in the unprivileged user + mount namespace
  mount --move /mnt/aaa /opt

Unfortunately, this is a pretty big deal for userspace since this is
e.g. used to inject mounts into running unprivileged containers.
So this regression really needs to go away rather quickly.

The problem is that a recent change falsely locked the root of the newly
added mounts by setting MNT_LOCKED. Fix this by only locking the mounts
on copy_mnt_ns() and not when adding a new mount.

Fixes: 3bd045cc9c4b ("separate copying and locking mount tree on cross-userns copies")
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: <stable@vger.kernel.org>
Tested-by: Christian Brauner <christian@brauner.io>
Acked-by: Christian Brauner <christian@brauner.io>
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Christian Brauner <christian@brauner.io>
---
 fs/namespace.c | 1 +
 fs/pnode.c     | 3 +--
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/namespace.c b/fs/namespace.c
index b26778bdc236..44b540e6feb9 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -2105,6 +2105,7 @@ static int attach_recursive_mnt(struct mount *source_mnt,
 		/* Notice when we are propagating across user namespaces */
 		if (child->mnt_parent->mnt_ns->user_ns != user_ns)
 			lock_mnt_tree(child);
+		child->mnt.mnt_flags &= ~MNT_LOCKED;
 		commit_tree(child);
 	}
 	put_mountpoint(smp);
diff --git a/fs/pnode.c b/fs/pnode.c
index 595857a1883e..d118106fa631 100644
--- a/fs/pnode.c
+++ b/fs/pnode.c
@@ -257,11 +257,10 @@ static int propagate_one(struct mount *m)
 		if (IS_MNT_SHARED(m))
 			type |= CL_MAKE_SHARED;
 	}
-		
+
 	child = copy_tree(last_source, last_source->mnt.mnt_root, type);
 	if (IS_ERR(child))
 		return PTR_ERR(child);
-	child->mnt.mnt_flags &= ~MNT_LOCKED;
 	mnt_set_mountpoint(m, mp, child);
 	last_dest = m;
 	last_source = child;
-- 
2.21.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] fs/namespace: fix unprivileged mount propagation
  2019-06-17 18:47 [PATCH] fs/namespace: fix unprivileged mount propagation Christian Brauner
@ 2019-06-17 18:50 ` Linus Torvalds
  2019-06-17 18:52   ` Christian Brauner
  2019-06-17 18:55   ` Al Viro
  0 siblings, 2 replies; 4+ messages in thread
From: Linus Torvalds @ 2019-06-17 18:50 UTC (permalink / raw)
  To: Christian Brauner
  Cc: Al Viro, Eric W. Biederman, Linux List Kernel Mailing,
	linux-fsdevel, stable

On Mon, Jun 17, 2019 at 11:47 AM Christian Brauner <christian@brauner.io> wrote:
>
> When propagating mounts across mount namespaces owned by different user
> namespaces it is not possible anymore to move or umount the mount in the
> less privileged mount namespace.

I will wait a short while in the hope of getting Al's ack for this,
but since it looks about as good as it likely can be, I suspect I'll
just apply it later today even without such an ack..

                    Linus

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] fs/namespace: fix unprivileged mount propagation
  2019-06-17 18:50 ` Linus Torvalds
@ 2019-06-17 18:52   ` Christian Brauner
  2019-06-17 18:55   ` Al Viro
  1 sibling, 0 replies; 4+ messages in thread
From: Christian Brauner @ 2019-06-17 18:52 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Al Viro, Eric W. Biederman, Linux List Kernel Mailing,
	linux-fsdevel, stable

On Mon, Jun 17, 2019 at 11:50:13AM -0700, Linus Torvalds wrote:
> On Mon, Jun 17, 2019 at 11:47 AM Christian Brauner <christian@brauner.io> wrote:
> >
> > When propagating mounts across mount namespaces owned by different user
> > namespaces it is not possible anymore to move or umount the mount in the
> > less privileged mount namespace.
> 
> I will wait a short while in the hope of getting Al's ack for this,
> but since it looks about as good as it likely can be, I suspect I'll
> just apply it later today even without such an ack..

Thanks!
Note that I stupidly messed up whitespace by accidently adding an
additional newline. I'll just send a v1 that fixes this nonsense.

Christian

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] fs/namespace: fix unprivileged mount propagation
  2019-06-17 18:50 ` Linus Torvalds
  2019-06-17 18:52   ` Christian Brauner
@ 2019-06-17 18:55   ` Al Viro
  1 sibling, 0 replies; 4+ messages in thread
From: Al Viro @ 2019-06-17 18:55 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Christian Brauner, Eric W. Biederman, Linux List Kernel Mailing,
	linux-fsdevel, stable

On Mon, Jun 17, 2019 at 11:50:13AM -0700, Linus Torvalds wrote:
> On Mon, Jun 17, 2019 at 11:47 AM Christian Brauner <christian@brauner.io> wrote:
> >
> > When propagating mounts across mount namespaces owned by different user
> > namespaces it is not possible anymore to move or umount the mount in the
> > less privileged mount namespace.
> 
> I will wait a short while in the hope of getting Al's ack for this,
> but since it looks about as good as it likely can be, I suspect I'll
> just apply it later today even without such an ack..

Give me a bit; I'm busy digging myself from under the pile of mail accumulated
in the last few weeks (bronchitis sucked, especially when it got to the point
where one can't stay asleep for more than an hour or get more than about 5 hours
per day total).  I'm trying not to throw anything relevant out, but if I don't
reply to something important today or tomorrow, please resend it my way -
the pile had been 36Kmail (down to 24K now) ;-/

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-06-17 18:55 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-17 18:47 [PATCH] fs/namespace: fix unprivileged mount propagation Christian Brauner
2019-06-17 18:50 ` Linus Torvalds
2019-06-17 18:52   ` Christian Brauner
2019-06-17 18:55   ` Al Viro

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).