[CRIU] [PATCH] test: shm -- Make sure SysV memory restored properly

Cyrill Gorcunov gorcunov at openvz.org
Sat Oct 25 12:18:00 PDT 2014


In criu we carry SysV memory via @VMA_AREA_SYSVIPC
attribute but to the test must have a live reference
to real memory area to check that shmem address was
restored correctly. Add it.

Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
---
 test/zdtm/live/static/shm.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/test/zdtm/live/static/shm.c b/test/zdtm/live/static/shm.c
index b29da4a0ad61..003474a38a18 100644
--- a/test/zdtm/live/static/shm.c
+++ b/test/zdtm/live/static/shm.c
@@ -107,6 +107,9 @@ static int test_fn(int argc, char **argv)
 	int fail_count = 0;
 	int ret = -1;
 
+	void *mem;
+	uint32_t crc = INIT_CRC;
+
 	key = ftok(argv[0], 822155666);
 	if (key == -1) {
 		err("Can't make key");
@@ -119,6 +122,12 @@ static int test_fn(int argc, char **argv)
 		goto out;
 	}
 
+	mem = shmat(shm, NULL, 0);
+	if (mem == (void *)-1) {
+		err("Can't shmat");
+		goto out;
+	}
+
 	test_daemon();
 	test_waitsig();
 
@@ -136,6 +145,16 @@ static int test_fn(int argc, char **argv)
 		goto out_shm;
 	}
 
+	if (datachk(mem, shmem_size, &crc)) {
+		fail("shmem data is corrupted");
+		return -1;
+	}
+
+	if (shmdt(mem) < 0) {
+		err("Can't detach shm");
+		return -1;
+	}
+
 	ret = shmctl(shm, IPC_RMID, NULL);
 	if (ret < 0) {
 		fail("Failed (1) to destroy segment: %d\n", -errno);
-- 
1.9.3



More information about the CRIU mailing list