Unverified Commit 3d8aefd4 authored by Christian Brauner's avatar Christian Brauner
Browse files
parent 00de6e24
Loading
Loading
Loading
Loading
+12 −23
Original line number Diff line number Diff line
@@ -301,7 +301,6 @@ static long ns_ioctl(struct file *filp, unsigned int ioctl,
		struct mnt_ns_info kinfo = {};
		struct mnt_ns_info __user *uinfo = (struct mnt_ns_info __user *)arg;
		struct path path __free(path_put) = {};
		struct file *f __free(fput) = NULL;
		size_t usize = _IOC_SIZE(ioctl);

		if (ns->ns_type != CLONE_NEWNS)
@@ -320,15 +319,9 @@ static long ns_ioctl(struct file *filp, unsigned int ioctl,
		if (ret)
			return ret;

		CLASS(get_unused_fd, fd)(O_CLOEXEC);
		if (fd < 0)
			return fd;

		f = dentry_open(&path, O_RDONLY, current_cred());
		if (IS_ERR(f))
			return PTR_ERR(f);

		if (uinfo) {
		FD_PREPARE(fdf, O_CLOEXEC, dentry_open(&path, O_RDONLY, current_cred()));
		if (fdf.err)
			return fdf.err;
		/*
		 * If @uinfo is passed return all information about the
		 * mount namespace as well.
@@ -336,12 +329,8 @@ static long ns_ioctl(struct file *filp, unsigned int ioctl,
		ret = copy_ns_info_to_user(to_mnt_ns(ns), uinfo, usize, &kinfo);
		if (ret)
			return ret;
		}

		/* Transfer reference of @f to caller's fdtable. */
		fd_install(fd, no_free_ptr(f));
		/* File descriptor is live so hand it off to the caller. */
		return take_fd(fd);
		ret = fd_publish(fdf);
		break;
	}
	default:
		ret = -ENOTTY;