On Sat, Aug 16, 2025 at 09:31:11AM +0530, 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 is because "the least significant 8 bits" is returned to parent, right?
>
>This patch changes test_child_ksm() to return positive error codes (1, 2,
>3) and updates test_child_ksm_err() to interpret them correctly.
>Additionally, test_prctl_fork_exec() now uses exit(4) after a failed
>execv() to clearly signal exec failures. 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")
>Co-developed-by: Donet Tom <[email protected]>
>Signed-off-by: Donet Tom <[email protected]>
>Acked-by: David Hildenbrand <[email protected]>
>Signed-off-by: Aboorva Devarajan <[email protected]>
If so:
Reviewed-by: Wei Yang <[email protected]>
Thanks, I am afraid to make the same mistake if you don't point out.
--
Wei Yang
Help you, Help me