[PATCH] selftests: mm: capture write_hugetlb_memory.sh exit status

From: CaoRuichuang

Date: Sun Apr 05 2026 - 15:48:00 EST


charge_reserved_hugetlb.sh backgrounds write_hugetlb_memory.sh and immediately stores $? in write_result.

That only records whether the background job was started successfully, not whether write_hugetlb_memory.sh itself later failed. As a result, the test can miss reservation failure and OOM-kill outcomes that are inferred from the writer exit status.

Redirect the writer output straight to the temporary log file and wait for the background process before inspecting write_result, so the test records the actual exit status.

Signed-off-by: CaoRuichuang <create0818@xxxxxxx>
---
tools/testing/selftests/mm/charge_reserved_hugetlb.sh | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/mm/charge_reserved_hugetlb.sh b/tools/testing/selftests/mm/charge_reserved_hugetlb.sh
index 447769657..2f52ad7c8 100755
--- a/tools/testing/selftests/mm/charge_reserved_hugetlb.sh
+++ b/tools/testing/selftests/mm/charge_reserved_hugetlb.sh
@@ -193,9 +193,9 @@ function write_hugetlbfs_and_get_usage() {
[[ "$private" == "-r" ]] && [[ "$expect_failure" != 1 ]]; then

bash write_hugetlb_memory.sh "$size" "$populate" "$write" \
- "$cgroup" "$path" "$method" "$private" "-l" "$reserve" 2>&1 | tee $output &
+ "$cgroup" "$path" "$method" "$private" "-l" "$reserve" \
+ >"$output" 2>&1 &

- local write_result=$?
local write_pid=$!

until grep -q -i "DONE" $output; do
@@ -223,6 +223,8 @@ function write_hugetlbfs_and_get_usage() {
sleep 0.5
fi

+ wait "$write_pid"
+ local write_result=$?
echo write_result is $write_result
else
bash write_hugetlb_memory.sh "$size" "$populate" "$write" \
--
2.39.5 (Apple Git-154)