On 03.07.25 08:06, Aboorva Devarajan wrote:
In ksm_functional_tests, test_child_ksm() returned negative values to indicate errors. However, when passed to exit(), these were interpreted as large unsigned values (e.g, -2 became 254), leading to incorrect handling in the parent process. As a result, some tests appeared to be skipped or silently failed.This patch changes test_child_ksm() to return positive error codes (1, 2, 3) and updates test_child_ksm_err() to interpret them correctly. This ensures the parent accurately detects and reports child process failures. -------------- Before patch: -------------- - [RUN] test_unmerge ok 1 Pages were unmerged ... - [RUN] test_prctl_fork - No pages got merged - [RUN] test_prctl_fork_exec ok 7 PR_SET_MEMORY_MERGE value is inherited ... Bail out! 1 out of 8 tests failed - Planned tests != run tests (9 != 8) - Totals: pass:7 fail:1 xfail:0 xpass:0 skip:0 error:0 -------------- After patch: -------------- - [RUN] test_unmerge ok 1 Pages were unmerged ... - [RUN] test_prctl_fork - No pages got merged not ok 7 Merge in child failed - [RUN] test_prctl_fork_exec ok 8 PR_SET_MEMORY_MERGE value is inherited ... Bail out! 2 out of 9 tests failed - Totals: pass:7 fail:2 xfail:0 xpass:0 skip:0 error:0 Fixes: 6c47de3be3a0 ("selftest/mm: ksm_functional_tests: extend test case for ksm fork/exec") Signed-off-by: Aboorva Devarajan <[email protected]>
BTW, when I run the test, I get this weird output TAP version 13 1..9 # [RUN] test_unmerge ok 1 Pages were unmerged # [RUN] test_unmerge_zero_pages ok 2 KSM zero pages were unmerged # [RUN] test_unmerge_discarded ok 3 Pages were unmerged # [RUN] test_unmerge_uffd_wp ok 4 Pages were unmerged # [RUN] test_prot_none ok 5 Pages were unmerged # [RUN] test_prctl ok 6 Setting/clearing PR_SET_MEMORY_MERGE works # [RUN] test_prctl_fork ok 7 PR_SET_MEMORY_MERGE value is inherited # [RUN] test_prctl_fork_exec ^ where is the test? # [RUN] test_prctl_unmerge ok 8 Pages were unmerged # Planned tests != run tests (9 != 8) # Totals: pass:8 fail:0 xfail:0 xpass:0 skip:0 error:0 ^ what? ok 8 PR_SET_MEMORY_MERGE value is inherited # [RUN] test_prctl_unmerge ok 9 Pages were unmerged # Totals: pass:9 fail:0 xfail:0 xpass:0 skip:0 error:0 ^ huh, what now? -- Cheers, David / dhildenb

