On 21.07.22 20:33, Peter Xu wrote: > Add two soft-diryt test cases for mprotect() on both anon or file. s/soft-diryt/soft-dirty/ > > Signed-off-by: Peter Xu <peterx@xxxxxxxxxx> > --- > tools/testing/selftests/vm/soft-dirty.c | 69 ++++++++++++++++++++++++- > 1 file changed, 68 insertions(+), 1 deletion(-) > > diff --git a/tools/testing/selftests/vm/soft-dirty.c b/tools/testing/selftests/vm/soft-dirty.c > index 08ab62a4a9d0..7d93906aa43f 100644 > --- a/tools/testing/selftests/vm/soft-dirty.c > +++ b/tools/testing/selftests/vm/soft-dirty.c > @@ -121,13 +121,78 @@ static void test_hugepage(int pagemap_fd, int pagesize) > free(map); > } > > +static void test_mprotect(int pagemap_fd, int pagesize, bool anon) > +{ > + const char *type[] = {"file", "anon"}; > + const char *fname = "./soft-dirty-test-file"; > + int test_fd; > + char *map; Instead of fname, unlink, open, close, unlink you can use a tmpfile FILE *file; file = tmpfile(); if (!file) { ksft_test_result_fail("tmpfile() failed\n"); return; } test_fd = fileno(file); > + > + if (anon) { > + map = mmap(NULL, pagesize, PROT_READ|PROT_WRITE, > + MAP_ANONYMOUS|MAP_PRIVATE, -1, 0); > + if (!map) > + ksft_exit_fail_msg("anon mmap failed\n"); > + } else { > + unlink(fname); > + test_fd = open(fname, O_RDWR | O_CREAT); > + if (test_fd < 0) { > + ksft_test_result_skip("Test %s huge page allocation\n", __func__); Wrong copy-paste I assume :) > + return; > + } > + ftruncate(test_fd, pagesize); > + map = mmap(NULL, pagesize, PROT_READ|PROT_WRITE, > + MAP_SHARED, test_fd, 0); > + if (!map) > + ksft_exit_fail_msg("file mmap failed\n"); > + } > + Apart from that LGTM. -- Thanks, David / dhildenb