This reverts commit a8e0dd94d5cd9e0efefdd928a55d669eff176723.

We switch from procfs ns-files to nsfs ones, so we will apply nsfs
version of the patch instead.

https://jira.sw.ru/browse/PSBM-102357

Signed-off-by: Pavel Tikhomirov <[email protected]>
---
 fs/proc/namespaces.c | 81 ++++----------------------------------------
 1 file changed, 7 insertions(+), 74 deletions(-)

diff --git a/fs/proc/namespaces.c b/fs/proc/namespaces.c
index a6a3c79764d7..280e90ecf105 100644
--- a/fs/proc/namespaces.c
+++ b/fs/proc/namespaces.c
@@ -13,12 +13,7 @@
 #include <linux/pid_namespace.h>
 #include <linux/user_namespace.h>
 #include "internal.h"
-#include <linux/ioctl.h>
 
-#define NSIO   0xb7
-
-/* Returns a file descriptor that refers to an owning user namespace */
-#define NS_GET_USERNS  _IO(NSIO, 0x1)
 
 static const struct proc_ns_operations *ns_entries[] = {
 #ifdef CONFIG_NET_NS
@@ -40,11 +35,8 @@ static const struct proc_ns_operations *ns_entries[] = {
        &mntns_operations,
 };
 
-static long ns_ioctl(struct file *filp, unsigned int ioctl,
-               unsigned long arg);
 static const struct file_operations ns_file_operations = {
        .llseek         = no_llseek,
-       .unlocked_ioctl = ns_ioctl,
 };
 
 static const struct inode_operations ns_inode_operations = {
@@ -72,13 +64,18 @@ const struct dentry_operations ns_dentry_operations =
        .d_dname        = ns_dname,
 };
 
-static struct dentry *__proc_ns_get_dentry(struct super_block *sb,
-       void *ns, const struct proc_ns_operations *ns_ops)
+static struct dentry *proc_ns_get_dentry(struct super_block *sb,
+       struct task_struct *task, const struct proc_ns_operations *ns_ops)
 {
        struct dentry *dentry, *result;
        struct inode *inode;
        struct proc_inode *ei;
        struct qstr qname = { .name = "", };
+       void *ns;
+
+       ns = ns_ops->get(task);
+       if (!ns)
+               return ERR_PTR(-ENOENT);
 
        dentry = d_alloc_pseudo(sb, &qname);
        if (!dentry) {
@@ -116,70 +113,6 @@ static struct dentry *__proc_ns_get_dentry(struct 
super_block *sb,
        return dentry;
 }
 
-static struct dentry *proc_ns_get_dentry(struct super_block *sb,
-       struct task_struct *task, const struct proc_ns_operations *ns_ops)
-{
-       void *ns;
-
-       ns = ns_ops->get(task);
-       if (!ns)
-               return ERR_PTR(-ENOENT);
-
-       return __proc_ns_get_dentry(sb, ns, ns_ops);
-}
-
-static int open_related_ns(struct vfsmount *mnt, struct proc_ns *ns,
-               const struct proc_ns_operations *relative_ns_ops,
-               void *(*get_ns)(void *ns,
-                       const struct proc_ns_operations *ns_ops)) {
-       struct path path = {};
-       struct file *f;
-       int fd;
-       void *relative;
-
-       fd = get_unused_fd_flags(O_CLOEXEC);
-       if (fd < 0)
-               return fd;
-
-       relative = get_ns(ns->ns, ns->ns_ops);
-       if (IS_ERR(relative)) {
-               put_unused_fd(fd);
-               return PTR_ERR(relative);
-       }
-
-       path.mnt = mntget(mnt);
-       path.dentry = __proc_ns_get_dentry(mnt->mnt_sb, relative, 
relative_ns_ops);
-       if (IS_ERR(path.dentry)) {
-               mntput(mnt);
-               put_unused_fd(fd);
-               return PTR_ERR(path.dentry);
-       }
-
-       f = dentry_open(&path, O_RDONLY, current_cred());
-       path_put(&path);
-       if (IS_ERR(f)) {
-               put_unused_fd(fd);
-               fd = PTR_ERR(f);
-       } else
-               fd_install(fd, f);
-
-       return fd;
-}
-
-static long ns_ioctl(struct file *filp, unsigned int ioctl,
-               unsigned long arg)
-{
-       struct vfsmount *mnt = filp->f_path.mnt;
-       struct proc_ns *ns = get_proc_ns(file_inode(filp));
-
-       switch (ioctl) {
-       case NS_GET_USERNS:
-               return open_related_ns(mnt, ns, &userns_operations, 
ns_get_owner);
-       default:
-               return -ENOTTY;
-       }
-}
-
 static void *proc_ns_follow_link(struct dentry *dentry, struct nameidata *nd)
 {
        struct inode *inode = dentry->d_inode;
-- 
2.24.1

_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to