Commit 4ec63d53 authored by Pavel Emelyanov's avatar Pavel Emelyanov

rst: Don't lookup ns if current mntns is the same as root's one

Acked-by: 's avatarAndrew Vagin <avagin@parallels.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 79f3e908
...@@ -1575,13 +1575,10 @@ char *rst_get_mnt_root(int mnt_id) ...@@ -1575,13 +1575,10 @@ char *rst_get_mnt_root(int mnt_id)
return path; return path;
} }
static int do_restore_task_mnt_ns(struct ns_id *nsid, pid_t pid) static int do_restore_task_mnt_ns(struct ns_id *nsid)
{ {
char path[PATH_MAX]; char path[PATH_MAX];
if (root_item->ids->mnt_ns_id == nsid->id)
return 0;
if (nsid->pid != getpid()) { if (nsid->pid != getpid()) {
int fd; int fd;
...@@ -1616,15 +1613,19 @@ static int do_restore_task_mnt_ns(struct ns_id *nsid, pid_t pid) ...@@ -1616,15 +1613,19 @@ static int do_restore_task_mnt_ns(struct ns_id *nsid, pid_t pid)
int restore_task_mnt_ns(struct pstree_item *current) int restore_task_mnt_ns(struct pstree_item *current)
{ {
if (current->ids && current->ids->has_mnt_ns_id) { if (current->ids && current->ids->has_mnt_ns_id) {
unsigned int id = current->ids->mnt_ns_id;
struct ns_id *nsid; struct ns_id *nsid;
nsid = lookup_ns_by_id(current->ids->mnt_ns_id, &mnt_ns_desc); if (root_item->ids->mnt_ns_id == id)
return 0;
nsid = lookup_ns_by_id(id, &mnt_ns_desc);
if (nsid == NULL) { if (nsid == NULL) {
pr_err("Can't find mount namespace %d\n", current->ids->mnt_ns_id); pr_err("Can't find mount namespace %d\n", id);
return -1; return -1;
} }
if (do_restore_task_mnt_ns(nsid, current->pid.real)) if (do_restore_task_mnt_ns(nsid))
return -1; return -1;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment