On 8/19/26 5:44 PM, 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]>

LGTM, so:

Reviewed-by: Sarthak Sharma <[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,


Reply via email to