[CRIU] [PATCH] kerndat: initialize zero_page_pfn to -1
Andrey Vagin
avagin at openvz.org
Fri Apr 29 11:17:49 PDT 2016
From: Andrew Vagin <avagin at virtuozzo.com>
zero_page_pfn should be invalid if it isn't set to a real value.
zero is bad, because pagemap returns zero pfn-s for non-root users.
$ python test/zdtm.py run -t zdtm/static/env00 -k always -f h --user --norst
========================== Run zdtm/static/env00 in h ==========================
Start test
./env00 --pidfile=env00.pid --outfile=env00.out --envname=ENV_00_TEST
Run criu dump
Wait for zdtm/static/env00 to die for 0.100000
========================= Test zdtm/static/env00 PASS ==========================
$ ./crit/crit show test/dump/zdtm/static/env00/24/1/pagemap-24.img
{
"magic": "PAGEMAP",
"entries": [
{
"pages_id": 1
},
{
"vaddr": "0x7ffcfd5ed000",
"nr_pages": 2
}
]
}
Signed-off-by: Andrew Vagin <avagin at virtuozzo.com>
---
criu/kerndat.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/criu/kerndat.c b/criu/kerndat.c
index 8636b07..8127b6e 100644
--- a/criu/kerndat.c
+++ b/criu/kerndat.c
@@ -292,7 +292,13 @@ no_dt:
static int init_zero_page_pfn()
{
void *addr;
- int ret;
+ int ret = 0;
+
+ kdat.zero_page_pfn = -1;
+ if (kdat.pmap != PM_FULL) {
+ pr_info("Zero page detection failed, optimization turns off.\n");
+ return 0;
+ }
addr = mmap(NULL, PAGE_SIZE, PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
if (addr == MAP_FAILED) {
@@ -305,11 +311,6 @@ static int init_zero_page_pfn()
return -1;
}
- if (kdat.pmap != PM_FULL) {
- pr_info("Zero page detection failed, optimization turns off.\n");
- return 0;
- }
-
ret = vaddr_to_pfn((unsigned long)addr, &kdat.zero_page_pfn);
munmap(addr, PAGE_SIZE);
--
2.5.5
More information about the CRIU
mailing list