All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lorenzo Stoakes <ljs@kernel.org>
To: Chunyu Hu <chuhu@redhat.com>
Cc: akpm@linux-foundation.org, david@kernel.org, shuah@kernel.org,
	 linux-mm@kvack.org, linux-kselftest@vger.kernel.org,
	linux-kernel@vger.kernel.org,  lorenzo.stoakes@oracle.com,
	Liam.Howlett@oracle.com, vbabka@suse.cz, rppt@kernel.org,
	 surenb@google.com, mhocko@suse.com, ziy@nvidia.com,
	baolin.wang@linux.alibaba.com,  npache@redhat.com,
	ryan.roberts@arm.com, dev.jain@arm.com, baohua@kernel.org,
	 lance.yang@linux.dev
Subject: Re: [PATCH v8 4/6] selftests/mm/vm_util: robust write_file()
Date: Tue, 7 Apr 2026 11:55:55 +0100	[thread overview]
Message-ID: <adTiRbjdoTjfWKeM@lucifer> (raw)
In-Reply-To: <20260402014543.1671131-5-chuhu@redhat.com>

On Thu, Apr 02, 2026 at 09:45:41AM +0800, Chunyu Hu wrote:
> 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.
>
> Signed-off-by: Chunyu Hu <chuhu@redhat.com>

LGTM, so:

Reviewed-by: Lorenzo Stoakes <ljs@kernel.org>

> ---
> Changes in v8:
>   - go back to ksft_exit_fail_msg in the two error exit path as no clean
>     ksft_exit_fail_perror that supports va_list
> Changes in v7:
>   - add an empty line before the 'buflen < 1' line.  And change to
>    'buflen < 2 to limit the buflen at least to be 2, so at least one char
>     is allowed.
>   - handle the numwriten < 0 case, which is the error path.
>   - use ksft_exit_fail_perror in error exit path.
>   - use %.*s to print the buf when error happened
> Changes in v6:
>   - save/restore errno before and after the close(), so the log could show
>     the correct error info on failure. Suggested by AI.
> Chagnes in v5:
>   - new patch for making improve on write_file. Add more safety checks and
>     diagnostics info in log
> ---
>  tools/testing/selftests/mm/vm_util.c | 15 ++++++++++++---
>  1 file changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/tools/testing/selftests/mm/vm_util.c b/tools/testing/selftests/mm/vm_util.c
> index ad96d19d1b85..db94564f4431 100644
> --- a/tools/testing/selftests/mm/vm_util.c
> +++ b/tools/testing/selftests/mm/vm_util.c
> @@ -767,15 +767,24 @@ int unpoison_memory(unsigned long pfn)
>
>  void write_file(const char *path, const char *buf, size_t buflen)
>  {
> -	int fd;
> +	int fd, saved_errno;
>  	ssize_t numwritten;
>
> +	if (buflen < 2)
> +		ksft_exit_fail_msg("Incorrect buffer len: %zu\n", buflen);
> +
>  	fd = open(path, O_WRONLY);
>  	if (fd == -1)
>  		ksft_exit_fail_msg("%s open failed: %s\n", path, strerror(errno));
>
>  	numwritten = write(fd, buf, buflen - 1);
> +	saved_errno = errno;
>  	close(fd);
> -	if (numwritten < 1)
> -		ksft_exit_fail_msg("Write failed\n");
> +	errno = saved_errno;
> +	if (numwritten < 0)
> +		ksft_exit_fail_msg("%s write(%.*s) failed: %s\n", path, (int)(buflen - 1),
> +				buf, strerror(errno));
> +	if (numwritten != buflen - 1)
> +		ksft_exit_fail_msg("%s write(%.*s) is truncated, expected %zu bytes, got %zd bytes\n",
> +				path, (int)(buflen - 1), buf, buflen - 1, numwritten);
>  }
> --
> 2.53.0
>

  parent reply	other threads:[~2026-04-07 10:56 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-02  1:45 [PATCH v8 0/6] selftests/mm: skip several tests when thp is not available Chunyu Hu
2026-04-02  1:45 ` [PATCH v8 1/6] selftests/mm/guard-regions: skip collapse test when thp not enabled Chunyu Hu
2026-04-02  1:45 ` [PATCH v8 2/6] selftests/mm: soft-dirty: skip two tests when thp is not available Chunyu Hu
2026-04-02  1:45 ` [PATCH v8 3/6] selftests/mm: move write_file helper to vm_util Chunyu Hu
2026-04-02  1:45 ` [PATCH v8 4/6] selftests/mm/vm_util: robust write_file() Chunyu Hu
2026-04-02  8:05   ` David Hildenbrand (Arm)
2026-04-07 10:55   ` Lorenzo Stoakes [this message]
2026-04-02  1:45 ` [PATCH v8 5/6] selftests/mm: split_huge_page_test: skip the test when thp is not available Chunyu Hu
2026-04-02  1:45 ` [PATCH v8 6/6] selftests/mm: transhuge_stress: skip the test when thp " Chunyu Hu
2026-04-02  3:32 ` [PATCH v8 0/6] selftests/mm: skip several tests when thp is " Andrew Morton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=adTiRbjdoTjfWKeM@lucifer \
    --to=ljs@kernel.org \
    --cc=Liam.Howlett@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=baohua@kernel.org \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=chuhu@redhat.com \
    --cc=david@kernel.org \
    --cc=dev.jain@arm.com \
    --cc=lance.yang@linux.dev \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lorenzo.stoakes@oracle.com \
    --cc=mhocko@suse.com \
    --cc=npache@redhat.com \
    --cc=rppt@kernel.org \
    --cc=ryan.roberts@arm.com \
    --cc=shuah@kernel.org \
    --cc=surenb@google.com \
    --cc=vbabka@suse.cz \
    --cc=ziy@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.