On 22.07.22 16:00, David Hildenbrand wrote: > On 22.07.22 15:44, Peter Xu wrote: >> On Fri, Jul 22, 2022 at 09:17:34AM +0200, David Hildenbrand wrote: >>> 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/ >> >> Fixed. >> >>> >>>> >>>> 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); >> >> Note that tmpfile() should by default fetch from /tmp which is very >> possibly a tmpfs afaict. It's tricky in this special test case since I >> don't think tmpfs can trigger this bug (shmem doesn't define page_mkwrite). >> > > I don't think we need that? SOFTDIRTY tracking enabled should be > sufficient, or what am I missing? > I think you're right that it doesn't work with tmpfile. I do wonder why, because I'd have thought that it's sufficient for vma_wants_writenotify() to return "1" due to the vma_soft_dirty_enabled() check. Hm .... -- Thanks, David / dhildenb