Re: [PATCH] selftests/mm: check stat() return value in khugepaged get_finfo()

From: David Hildenbrand (Arm)

Date: Thu Aug 20 2026 - 13:38:12 EST


On 8/19/26 14:14, Anshuman wrote:
> get_finfo() calls stat() to get metadata about the target directory,
> but never checks the return value. On failure, stat() returns -1 and
> leaves path_stat unmodified, so path_stat.st_mode may contain
> uninitialized stack data.
>
> The code then checks S_ISDIR(path_stat.st_mode) against this
> potentially garbage value. This can produce a misleading "Not a
> directory" error when the real problem is a nonexistent or
> inaccessible path, or, in the worst case, the check could pass by
> chance on garbage data and let the function continue using an
> invalid path_stat for the rest of its logic.
>
> Check the return value and fail with a clear error message if
> stat() fails, matching the error-handling style already used for
> statfs() and read_file() later in the same function.
>
> Signed-off-by: Anshuman <anshumantewari123@xxxxxxxxx>
> ---
> tools/testing/selftests/mm/khugepaged.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/tools/testing/selftests/mm/khugepaged.c b/tools/testing/selftests/mm/khugepaged.c
> index 10e8dedcb..2240a9b4f 100644
> --- a/tools/testing/selftests/mm/khugepaged.c
> +++ b/tools/testing/selftests/mm/khugepaged.c
> @@ -121,7 +121,8 @@ static void get_finfo(const char *dir)
> char *str, *end;
>
> finfo.dir = dir;
> - stat(finfo.dir, &path_stat);
> + if (stat(finfo.dir, &path_stat))
> + ksft_exit_fail_perror("stat()");
> if (!S_ISDIR(path_stat.st_mode))
> ksft_exit_fail_msg("%s: Not a directory (%s)\n", __func__, finfo.dir);
> if (snprintf(finfo.path, sizeof(finfo.path), "%s/" TEST_FILE,

>From out selftests that should mostly be impossible to trigger, as
run_vmtests.sh will just create that directory.

So it's a valid improvement, but mostly irrelevant in practice

1Acked-by: David Hildenbrand (Arm) <david@xxxxxxxxxx>

--
Cheers,

David