[CRIU] [PATCH v2] zdtm: add maps_file_prot
Andrew Vagin
avagin at parallels.com
Fri Apr 4 00:38:14 PDT 2014
Acked-by: Andrew Vagin <avagin at parallels.com>
On Thu, Apr 03, 2014 at 03:04:46PM -0700, Jamie Liu wrote:
> Tests for the bugs fixed by "criu: fix filemap open permissions".
>
> Signed-off-by: Jamie Liu <jamieliu at google.com>
> ---
> test/zdtm.sh | 1 +
> test/zdtm/live/static/Makefile | 1 +
> test/zdtm/live/static/maps_file_prot.c | 53 ++++++++++++++++++++++++++++++++++
> 3 files changed, 55 insertions(+)
> create mode 100644 test/zdtm/live/static/maps_file_prot.c
>
> diff --git a/test/zdtm.sh b/test/zdtm.sh
> index d7f8fca..a8e6e2f 100755
> --- a/test/zdtm.sh
> +++ b/test/zdtm.sh
> @@ -12,6 +12,7 @@ static/maps00
> static/maps01
> static/maps02
> static/maps04
> +static/maps_file_prot
> static/mprotect00
> static/mtime_mmap
> static/sleeping00
> diff --git a/test/zdtm/live/static/Makefile b/test/zdtm/live/static/Makefile
> index 77e8788..baeedcd 100644
> --- a/test/zdtm/live/static/Makefile
> +++ b/test/zdtm/live/static/Makefile
> @@ -140,6 +140,7 @@ TST_FILE = \
> file_locks00 \
> file_locks01 \
> netns-nf \
> + maps_file_prot \
>
> TST_DIR = \
> cwd00 \
> diff --git a/test/zdtm/live/static/maps_file_prot.c b/test/zdtm/live/static/maps_file_prot.c
> new file mode 100644
> index 0000000..570191f
> --- /dev/null
> +++ b/test/zdtm/live/static/maps_file_prot.c
> @@ -0,0 +1,53 @@
> +#include <errno.h>
> +#include <fcntl.h>
> +#include <unistd.h>
> +#include <sys/mman.h>
> +#include <sys/stat.h>
> +#include <sys/types.h>
> +#include <linux/limits.h>
> +#include "zdtmtst.h"
> +
> +const char *test_doc = "Test mappings of same file with different prot";
> +const char *test_author = "Jamie Liu <jamieliu at google.com>";
> +
> +char *filename;
> +TEST_OPTION(filename, string, "file name", 1);
> +
> +#define die(fmt, arg...) do { err(fmt, ## arg); return 1; } while (0)
> +
> +int main(int argc, char ** argv)
> +{
> + void *ro_map, *rw_map;
> + int fd;
> +
> + test_init(argc, argv);
> +
> + fd = open(filename, O_RDWR | O_CREAT, 0644);
> + if (fd < 0)
> + die("open failed");
> + if (ftruncate(fd, 2 * PAGE_SIZE))
> + die("ftruncate failed");
> +
> + ro_map = mmap(NULL, 2 * PAGE_SIZE, PROT_READ, MAP_SHARED, fd, 0);
> + if (ro_map == MAP_FAILED)
> + die("mmap failed");
> + rw_map = ro_map + PAGE_SIZE;
> + if (mprotect(rw_map, PAGE_SIZE, PROT_READ | PROT_WRITE))
> + die("mprotect failed");
> +
> + close(fd);
> +
> + test_daemon();
> + test_waitsig();
> +
> + /* Check that rw_map is still writeable */
> + *(volatile char *)rw_map = 1;
> +
> + if (mprotect(ro_map, PAGE_SIZE, PROT_READ | PROT_WRITE)) {
> + fail("mprotect after restore failed");
> + return 1;
> + }
> +
> + pass();
> + return 0;
> +}
> --
> 1.9.1.423.g4596e3a
>
More information about the CRIU
mailing list