Commit a14ceb49 authored by Cyrill Gorcunov's avatar Cyrill Gorcunov

util: Fix parse_maps to handle anonymous shared mappings

In commit 99eb3d09
we started to use self-contained shared memory
region but it revealed the problem that anonymous
sgared mappings might be parsed by parse_maps incorrectly,
so fix it and be ready to get anon-shared mappings.
Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
parent f3ed69a3
...@@ -290,12 +290,14 @@ int parse_maps(pid_t pid, struct list_head *vma_area_list, bool use_map_files) ...@@ -290,12 +290,14 @@ int parse_maps(pid_t pid, struct list_head *vma_area_list, bool use_map_files)
/* /*
* No file but mapping -- anonymous one. * No file but mapping -- anonymous one.
*/ */
if (vma_area->vma.flags & MAP_SHARED) if (vma_area->vma.flags & MAP_SHARED) {
goto err_bogus_mapping; vma_area->vma.status |= VMA_ANON_SHARED;
vma_area->shmid = ino;
vma_area->vma.flags |= MAP_ANONYMOUS; } else {
vma_area->vma.status |= VMA_ANON_PRIVATE; vma_area->vma.status |= VMA_ANON_PRIVATE;
} }
vma_area->vma.flags |= MAP_ANONYMOUS;
}
list_add_tail(&vma_area->list, vma_area_list); list_add_tail(&vma_area->list, vma_area_list);
} }
...@@ -314,9 +316,9 @@ err: ...@@ -314,9 +316,9 @@ err:
return ret; return ret;
err_bogus_mapping: err_bogus_mapping:
pr_err("Bogus mapping %lx-%lx\n", pr_err("Bogus mapping %lx-%lx (flags: %x vm_file_fd: %d)\n",
vma_area->vma.start, vma_area->vma.start, vma_area->vma.end,
vma_area->vma.end); vma_area->vma.flags, vma_area->vm_file_fd);
goto err; goto err;
} }
......
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