Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9559f689 authored by Al Viro's avatar Al Viro
Browse files

fold dup_mnt_ns() into its only surviving caller



should've been done 6 years ago...

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent f6b742d8
Loading
Loading
Loading
Loading
+18 −30
Original line number Original line Diff line number Diff line
@@ -2397,20 +2397,25 @@ static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *user_ns)
	return new_ns;
	return new_ns;
}
}


/*
struct mnt_namespace *copy_mnt_ns(unsigned long flags, struct mnt_namespace *ns,
 * Allocate a new namespace structure and populate it with contents
		struct user_namespace *user_ns, struct fs_struct *new_fs)
 * copied from the namespace of the passed in task structure.
 */
static struct mnt_namespace *dup_mnt_ns(struct mnt_namespace *mnt_ns,
		struct user_namespace *user_ns, struct fs_struct *fs)
{
{
	struct mnt_namespace *new_ns;
	struct mnt_namespace *new_ns;
	struct vfsmount *rootmnt = NULL, *pwdmnt = NULL;
	struct vfsmount *rootmnt = NULL, *pwdmnt = NULL;
	struct mount *p, *q;
	struct mount *p, *q;
	struct mount *old = mnt_ns->root;
	struct mount *old;
	struct mount *new;
	struct mount *new;
	int copy_flags;
	int copy_flags;


	BUG_ON(!ns);

	if (likely(!(flags & CLONE_NEWNS))) {
		get_mnt_ns(ns);
		return ns;
	}

	old = ns->root;

	new_ns = alloc_mnt_ns(user_ns);
	new_ns = alloc_mnt_ns(user_ns);
	if (IS_ERR(new_ns))
	if (IS_ERR(new_ns))
		return new_ns;
		return new_ns;
@@ -2418,7 +2423,7 @@ static struct mnt_namespace *dup_mnt_ns(struct mnt_namespace *mnt_ns,
	namespace_lock();
	namespace_lock();
	/* First pass: copy the tree topology */
	/* First pass: copy the tree topology */
	copy_flags = CL_COPY_UNBINDABLE | CL_EXPIRE;
	copy_flags = CL_COPY_UNBINDABLE | CL_EXPIRE;
	if (user_ns != mnt_ns->user_ns)
	if (user_ns != ns->user_ns)
		copy_flags |= CL_SHARED_TO_SLAVE | CL_UNPRIVILEGED;
		copy_flags |= CL_SHARED_TO_SLAVE | CL_UNPRIVILEGED;
	new = copy_tree(old, old->mnt.mnt_root, copy_flags);
	new = copy_tree(old, old->mnt.mnt_root, copy_flags);
	if (IS_ERR(new)) {
	if (IS_ERR(new)) {
@@ -2438,13 +2443,13 @@ static struct mnt_namespace *dup_mnt_ns(struct mnt_namespace *mnt_ns,
	q = new;
	q = new;
	while (p) {
	while (p) {
		q->mnt_ns = new_ns;
		q->mnt_ns = new_ns;
		if (fs) {
		if (new_fs) {
			if (&p->mnt == fs->root.mnt) {
			if (&p->mnt == new_fs->root.mnt) {
				fs->root.mnt = mntget(&q->mnt);
				new_fs->root.mnt = mntget(&q->mnt);
				rootmnt = &p->mnt;
				rootmnt = &p->mnt;
			}
			}
			if (&p->mnt == fs->pwd.mnt) {
			if (&p->mnt == new_fs->pwd.mnt) {
				fs->pwd.mnt = mntget(&q->mnt);
				new_fs->pwd.mnt = mntget(&q->mnt);
				pwdmnt = &p->mnt;
				pwdmnt = &p->mnt;
			}
			}
		}
		}
@@ -2465,23 +2470,6 @@ static struct mnt_namespace *dup_mnt_ns(struct mnt_namespace *mnt_ns,
	return new_ns;
	return new_ns;
}
}


struct mnt_namespace *copy_mnt_ns(unsigned long flags, struct mnt_namespace *ns,
		struct user_namespace *user_ns, struct fs_struct *new_fs)
{
	struct mnt_namespace *new_ns;

	BUG_ON(!ns);
	get_mnt_ns(ns);

	if (!(flags & CLONE_NEWNS))
		return ns;

	new_ns = dup_mnt_ns(ns, user_ns, new_fs);

	put_mnt_ns(ns);
	return new_ns;
}

/**
/**
 * create_mnt_ns - creates a private namespace and adds a root filesystem
 * create_mnt_ns - creates a private namespace and adds a root filesystem
 * @mnt: pointer to the new root filesystem mountpoint
 * @mnt: pointer to the new root filesystem mountpoint