selftests-soft-dirty-add-test-for-mprotect.patch removed from -mm tree
The quilt patch titled
Subject: selftests: soft-dirty: add test for mprotect
has been removed from the -mm tree. Its filename was
selftests-soft-dirty-add-test-for-mprotect.patch
This patch was dropped because it was merged into the mm-stable branch of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: Peter Xu <[email protected]>
Subject: selftests: soft-dirty: add test for mprotect
Date: Mon, 25 Jul 2022 10:20:47 -0400
Add two soft-dirty test cases for mprotect() on both anon or file.
Signed-off-by Peter Xu <[email protected]>
Reviewed-by David Hildenbrand <[email protected]>
Cc Andrea Arcangeli <[email protected]>
Cc Nadav Amit <[email protected]>
Signed-off-by Andrew Morton <[email protected]>
---
tools/testing/selftests/vm/soft-dirty.c | 67 +++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-)
tools/testing/selftests/vm/soft-dirty.c renamed from tools/testing/selftests/vm/soft-dirty.c~selftests-soft-dirty-add-test-for-mprotect +66 -1
@@ -121,13 +121,76 @@ static void test_hugepage(int pagemap_fdfree (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; + +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 { + test_fd =open (fname,O_RDWR |O_CREAT ); +if (test_fd <0 ) { +ksft_test_result_skip ("Test %s open() file failed\n" , __func__); +return ; + } +unlink (fname); +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" ); + } + + *map =1 ; +ksft_test_result (pagemap_is_softdirty (pagemap_fd, map) ==1 , +"Test %s-%s dirty bit of new written page\n" , + __func__, type[anon]); +clear_softdirty (); +ksft_test_result (pagemap_is_softdirty (pagemap_fd, map) ==0 , +"Test %s-%s soft-dirty clear after clear_refs\n" , + __func__, type[anon]); +mprotect (map, pagesize,PROT_READ ); +ksft_test_result (pagemap_is_softdirty (pagemap_fd, map) ==0 , +"Test %s-%s soft-dirty clear after marking RO\n" , + __func__, type[anon]); +mprotect (map, pagesize,PROT_READ |PROT_WRITE ); +ksft_test_result (pagemap_is_softdirty (pagemap_fd, map) ==0 , +"Test %s-%s soft-dirty clear after marking RW\n" , + __func__, type[anon]); + *map =2 ; +ksft_test_result (pagemap_is_softdirty (pagemap_fd, map) ==1 , +"Test %s-%s soft-dirty after rewritten\n" , + __func__, type[anon]); + +munmap (map, pagesize); + +if (!anon) +close (test_fd); +} + +static void test_mprotect_anon (int pagemap_fd,int pagesize) +{ +test_mprotect (pagemap_fd, pagesize, true); +} + +static void test_mprotect_file (int pagemap_fd,int pagesize) +{ +test_mprotect (pagemap_fd, pagesize, false); +} +int main (int argc,char **argv) {int pagemap_fd;int pagesize;ksft_print_header (); -ksft_set_plan (5 ); +ksft_set_plan (15 ); pagemap_fd =open (PAGEMAP_FILE_PATH ,O_RDONLY );if (pagemap_fd <0 )
@@ -138,6 +201,8 @@ int main(int argc, char **argv)test_simple (pagemap_fd, pagesize);test_vma_reuse (pagemap_fd, pagesize);test_hugepage (pagemap_fd, pagesize); +test_mprotect_anon (pagemap_fd, pagesize); +test_mprotect_file (pagemap_fd, pagesize);close (pagemap_fd);
_
Patches currently in -mm which might be from [email protected] are