The commit is pushed to "branch-rh7-3.10.0-693.1.1.vz7.37.x-ovz" and will 
appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-693.1.1.vz7.37.5
------>
commit 704187ad5da3ffd63a737486d8dc6b2f70f79d54
Author: Andrei Vagin <ava...@openvz.org>
Date:   Mon Sep 18 12:15:00 2017 +0300

    ve: remove ve->root_path
    
    It was added a long time ago, when a container was executed in a host
    mount namespace. Now ve->root_path is used only in one place
    follow_dotdot(), but event there it looks useless, if we run a container
    in a separate mount namespace.
    
    ve->root_path can holds a mount tree and now it is impossible to umount
    it, when a container changes its root (pivot_root()).
    
    https://jira.sw.ru/browse/PSBM-71414
    
    Reported-by: Vasily Averin <v...@virtuozzo.com>
    Signed-off-by: Andrei Vagin <ava...@openvz.org>
    Reviewed-by: Vasily Averin <v...@virtuozzo.com>
---
 fs/namei.c          |  6 ------
 include/linux/ve.h  |  3 ---
 kernel/ve/ve.c      |  4 ----
 kernel/ve/veowner.c | 11 -----------
 4 files changed, 24 deletions(-)

diff --git a/fs/namei.c b/fs/namei.c
index 4dac2e6..14f17ec 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1298,12 +1298,6 @@ static int follow_dotdot(struct nameidata *nd)
                    nd->path.mnt == nd->root.mnt) {
                        break;
                }
-#ifdef CONFIG_VE
-               if (nd->path.dentry == get_exec_env()->root_path.dentry &&
-                       nd->path.mnt == get_exec_env()->root_path.mnt) {
-                       break;
-               }
-#endif
                if (nd->path.dentry != nd->path.mnt->mnt_root) {
                        /* rare case of legitimate dget_parent()... */
                        nd->path.dentry = dget_parent(nd->path.dentry);
diff --git a/include/linux/ve.h b/include/linux/ve.h
index d63edee..7999746 100644
--- a/include/linux/ve.h
+++ b/include/linux/ve.h
@@ -56,9 +56,6 @@ struct ve_struct {
        struct task_struct      *ve_umh_task;
        struct kthread_worker   ve_umh_worker;
 
-/* VE's root */
-       struct path             root_path;
-
        struct super_block      *dev_sb;
        struct super_block      *devpts_sb;
 
diff --git a/kernel/ve/ve.c b/kernel/ve/ve.c
index 0a835f3..b0188c3 100644
--- a/kernel/ve/ve.c
+++ b/kernel/ve/ve.c
@@ -436,16 +436,12 @@ static void ve_grab_context(struct ve_struct *ve)
        ve->init_cred = (struct cred *)get_current_cred();
        rcu_assign_pointer(ve->ve_ns, get_nsproxy(tsk->nsproxy));
        ve->ve_netns =  get_net(ve->ve_ns->net_ns);
-       get_fs_root(tsk->fs, &ve->root_path);
        synchronize_rcu();
 }
 
 static void ve_drop_context(struct ve_struct *ve)
 {
        struct nsproxy *ve_ns = ve->ve_ns;
-       path_put(&ve->root_path);
-       ve->root_path.mnt = NULL;
-       ve->root_path.dentry = NULL;
 
        put_net(ve->ve_netns);
        ve->ve_netns = NULL;
diff --git a/kernel/ve/veowner.c b/kernel/ve/veowner.c
index a7fe9cc..bb2b6fb 100644
--- a/kernel/ve/veowner.c
+++ b/kernel/ve/veowner.c
@@ -124,17 +124,6 @@ static void prepare_sysctl(void)
 
 void init_ve_system(void)
 {
-       struct task_struct *init_entry;
-       struct ve_struct *ve;
-       struct path root;
-
-       ve = get_ve0();
-
-       init_entry = init_pid_ns.child_reaper;
-
-       get_fs_root(init_entry->fs, &root);
-       ve->root_path = root;
-
 #ifdef CONFIG_PROC_FS
        prepare_proc();
 #endif
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to