Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

selftests/mm/vm_util: robust write_file()

Add three more checks for buflen and numwritten. The buflen should be at
least two, that means at least one char and the null-end. The error case
check is added by checking numwriten < 0 instead of numwritten < 1. And
the truncate case is checked. The test will exit if any of these
conditions aren't met.

Additionally, add more print information when a write failure occurs or a
truncated write happens, providing clearer diagnostics.

Link: https://lore.kernel.org/20260402014543.1671131-5-chuhu@redhat.com
Signed-off-by: Chunyu Hu <chuhu@redhat.com>
Acked-by: David Hildenbrand (Arm) <david@kernel.org>
Reviewed-by: Lorenzo Stoakes <ljs@kernel.org>
Cc: Nico Pache <npache@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Chunyu Hu and committed by
Andrew Morton
a784a3a3 710d2f30

+12 -3
+12 -3
tools/testing/selftests/mm/vm_util.c
··· 767 767 768 768 void write_file(const char *path, const char *buf, size_t buflen) 769 769 { 770 - int fd; 770 + int fd, saved_errno; 771 771 ssize_t numwritten; 772 + 773 + if (buflen < 2) 774 + ksft_exit_fail_msg("Incorrect buffer len: %zu\n", buflen); 772 775 773 776 fd = open(path, O_WRONLY); 774 777 if (fd == -1) 775 778 ksft_exit_fail_msg("%s open failed: %s\n", path, strerror(errno)); 776 779 777 780 numwritten = write(fd, buf, buflen - 1); 781 + saved_errno = errno; 778 782 close(fd); 779 - if (numwritten < 1) 780 - ksft_exit_fail_msg("Write failed\n"); 783 + errno = saved_errno; 784 + if (numwritten < 0) 785 + ksft_exit_fail_msg("%s write(%.*s) failed: %s\n", path, (int)(buflen - 1), 786 + buf, strerror(errno)); 787 + if (numwritten != buflen - 1) 788 + ksft_exit_fail_msg("%s write(%.*s) is truncated, expected %zu bytes, got %zd bytes\n", 789 + path, (int)(buflen - 1), buf, buflen - 1, numwritten); 781 790 }