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 <[email protected]> > --- > 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) <[email protected]> -- Cheers, David

