On 5/12/26 09:49, Vineet Agarwal wrote:
> create_pagecache_thp_and_fd() fills the backing file for the
> pagecache THP tests using repeated write() calls, but the return
> value is never checked.
>
> If a write fails or completes only partially, the test may continue
> with an incompletely initialized file and produce misleading results.
>
> Check the result of write() and fail the test if the expected number
> of bytes was not written.
>
> Signed-off-by: Vineet Agarwal <[email protected]>
> ---
> tools/testing/selftests/mm/split_huge_page_test.c | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/tools/testing/selftests/mm/split_huge_page_test.c
> b/tools/testing/selftests/mm/split_huge_page_test.c
> index 500d07c4938b..eab69b0f59a0 100644
> --- a/tools/testing/selftests/mm/split_huge_page_test.c
> +++ b/tools/testing/selftests/mm/split_huge_page_test.c
> @@ -609,9 +609,16 @@ static int create_pagecache_thp_and_fd(const char
> *testfile, size_t fd_size,
> assert(fd_size % sizeof(buf) == 0);
> for (i = 0; i < sizeof(buf); i++)
> buf[i] = (unsigned char)i;
> - for (i = 0; i < fd_size; i += sizeof(buf))
> - write(*fd, buf, sizeof(buf));
> -
> + for (i = 0; i < fd_size; i += sizeof(buf)) {
> + ssize_t written;
Do you really need the temporary variable?
> +
> + written = write(*fd, buf, sizeof(buf));
> + if (written != sizeof(buf)) {
> + ksft_perror("write testfile");
> + close(*fd);
> + goto err_out_unlink;
> + }
> + }
> close(*fd);
> sync();
> *fd = open("/proc/sys/vm/drop_caches", O_WRONLY);
Apart from that LGTM
Acked-by: David Hildenbrand (Arm) <[email protected]>
--
Cheers,
David