FAILED: patch "[PATCH] selftests/mm:fix test_prctl_fork_exec return failure" failed to apply to 5.10-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.10.y
git checkout FETCH_HEAD
git cherry-pick -x 8b8546d298dc9ce9d5d01a06c822e255d2159ca7
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2024070138-maximum-booting-2a24@gregkh' --subject-prefix 'PATCH 5.10.y' HEAD^..
Possible dependencies:
8b8546d298dc ("selftests/mm:fix test_prctl_fork_exec return failure")6c47de3be3a0 ("selftest/mm: ksm_functional_tests: extend test case for ksm fork/exec") 0374af1da077 ("mm/ksm: test case for prctl fork/exec workflow")e5013f11c6c9 ("selftest/mm: ksm_functional_tests: Add PROT_NONE test")42096aa24b82 ("selftest/mm: ksm_functional_tests: test in mmap_and_merge_range() if anything got merged") 3d0745e59c84 ("selftest: add a testcase of ksm zero pages")1150ea933855 ("selftests/ksm: ksm_functional_tests: add prctl unmerge test")07115fcc15b4 ("selftests/mm: add new selftests for KSM")3822a7c40997 ("Merge tag 'mm-stable-2023-02-20-13-37' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 8b8546d298dc9ce9d5d01a06c822e255d2159ca7 Mon Sep 17 00:00:00 2001
From: aigourensheng <[email protected]>
Date: Mon, 17 Jun 2024 01:29:34 -0400
Subject: [PATCH] selftests/mm:fix test_prctl_fork_exec return failure
After calling fork() in test_prctl_fork_exec(), the global variable ksm_full_scans_fd is initialized to 0 in the child process upon entering the main function of ./ksm_functional_tests.
In the function call chain test_child_ksm() -> __mmap_and_merge_range -> ksm_merge-> ksm_get_full_scans, start_scans = ksm_get_full_scans() will return an error. Therefore, the value of ksm_full_scans_fd needs to be initialized before calling test_child_ksm in the child process.
tools/testing/selftests/mm/ksm_functional_tests.c +24 -18
@@ -656,24 +656,8 @@ static void test_prot_none(void)munmap (map, size); } -int main (int argc,char **argv) +static void init_global_file_handles (void ) { -unsigned int tests =8 ; -int err; - -if (argc >1 && !strcmp (argv[1 ],FORK_EXEC_CHILD_PRG_NAME )) { -exit (test_child_ksm ()); - } - -#ifdef __NR_userfaultfd - tests++; -#endif - -ksft_print_header (); -ksft_set_plan (tests); - - pagesize =getpagesize (); - mem_fd =open ("/proc/self/mem" ,O_RDWR );if (mem_fd <0 )ksft_exit_fail_msg ("opening /proc/self/mem failed\n" );
@@ -688,8 +672,30 @@ int main(int argc, char **argv)ksft_exit_skip ("open(\"/proc/self/pagemap\") failed\n" ); proc_self_ksm_stat_fd =open ("/proc/self/ksm_stat" ,O_RDONLY ); proc_self_ksm_merging_pages_fd =open ("/proc/self/ksm_merging_pages" , -O_RDONLY ); +O_RDONLY ); ksm_use_zero_pages_fd =open ("/sys/kernel/mm/ksm/use_zero_pages" ,O_RDWR ); +} + +int main (int argc,char **argv) +{ +unsigned int tests =8 ; +int err; + +if (argc >1 && !strcmp (argv[1 ],FORK_EXEC_CHILD_PRG_NAME )) { +init_global_file_handles (); +exit (test_child_ksm ()); + } + +#ifdef __NR_userfaultfd + tests++; +#endif + +ksft_print_header (); +ksft_set_plan (tests); + + pagesize =getpagesize (); + +init_global_file_handles ();test_unmerge ();test_unmerge_zero_pages ();