All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chunyu Hu <chuhu@redhat.com>
To: akpm@linux-foundation.org, david@kernel.org, shuah@kernel.org,
	linux-mm@kvack.org, ljs@kernel.org
Cc: 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 v7 4/7] selftests: ksft_exit_fail_perror: support printf style arguments
Date: Tue, 31 Mar 2026 18:31:42 +0800	[thread overview]
Message-ID: <acuijiUs81Z7qYSL@gmail.com> (raw)
In-Reply-To: <20260330151503.670415-5-chuhu@redhat.com>

On Mon, Mar 30, 2026 at 11:15:00PM +0800, Chunyu Hu wrote:
> The ksft_exit_fail_perror function previously only accepted a single string
> argument, which limited its flexibility for providing specific context to
> failure messages.
> 
> This change updates ksft_exit_fail_perror to support variable arguments,
> similar to ksft_exit_fail_msg.  Adding the __printf(1, 2) attribute enables
> compile-time checking for format string correctness.
> 
> Signed-off-by: Chunyu Hu <chuhu@redhat.com>
> ---
> Changes in v7:
>   - new patch to convert ksft_exit_fail_perror support variable arguments
> ---
>  tools/testing/selftests/kselftest.h | 21 ++++++++++++++++++---
>  1 file changed, 18 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/testing/selftests/kselftest.h b/tools/testing/selftests/kselftest.h
> index afbcf8412ae5..11cabdabb3f6 100644
> --- a/tools/testing/selftests/kselftest.h
> +++ b/tools/testing/selftests/kselftest.h
> @@ -43,7 +43,7 @@
>   * the program is aborting before finishing all tests):
>   *
>   *    ksft_exit_fail_msg(fmt, ...);
> - *    ksft_exit_fail_perror(msg);
> + *    ksft_exit_fail_perror(fmt, ...);
>   *
>   */
>  #ifndef __KSELFTEST_H
> @@ -417,9 +417,24 @@ static inline __noreturn __printf(1, 2) void ksft_exit_fail_msg(const char *msg,
>  	exit(KSFT_FAIL);
>  }
>  
> -static inline __noreturn void ksft_exit_fail_perror(const char *msg)
> +static inline __noreturn __printf(1, 2) void ksft_exit_fail_perror(const char *msg, ...)
>  {
> -	ksft_exit_fail_msg("%s: %s (%d)\n", msg, strerror(errno), errno);
> +	va_list args;
> +	char *buf = NULL;
> +	int saved_errno = errno;
> +
> +	va_start(args, msg);
> +	if (vasprintf(&buf, msg, args) == -1) {

kernel test robot reported compile error on this, as the vasprintf
required _GNU_SOURCE. Looks like it's not appropriate to be used
in the common header. Looks like it can be replaced with a buf and
vsnprintf instead.

    char buf[512];
	va_start(args, msg);
	vsnprintf(buf, sizeof(buf), msg, args);

```
   In file included from za-fork.c:12:
   ../../kselftest.h: In function 'ksft_exit_fail_perror':
>> ../../kselftest.h:427:13: error: implicit declaration of function 'vasprintf'; did you mean 'vsprintf'? [-Wimplicit-function-declaration]
     427 |         if (vasprintf(&buf, msg, args) == -1) {
         |             ^~~~~~~~~
         |             vsprintf
--
   In file included from basic-gcs.c:16:
   tools/testing/selftests/kselftest.h: In function 'ksft_exit_fail_perror':
>> tools/testing/selftests/kselftest.h:427:13: error: implicit declaration of function 'vasprintf'; did you mean 'vsprintf'? [-Wimplicit-function-declaration]
     427 |         if (vasprintf(&buf, msg, args) == -1) {
         |             ^~~~~~~~~
         |             vsprintf
```



> +		va_end(args);
> +		ksft_exit_fail_msg("vasprintf failed: %s (%d)\n", strerror(saved_errno),
> +				saved_errno);
> +	}
> +	va_end(args);
> +
> +	errno = saved_errno;
> +	ksft_exit_fail_msg("%s: %s (%d)\n", buf, strerror(errno), errno);
> +
> +	free(buf);
>  }
>  
>  static inline __noreturn void ksft_exit_xfail(void)
> -- 
> 2.53.0
> 


  reply	other threads:[~2026-03-31 10:32 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-30 15:14 [PATCH v7 0/7] selftests/mm: skip several tests when thp is not available Chunyu Hu
2026-03-30 15:14 ` [PATCH v7 1/7] selftests/mm/guard-regions: skip collapse test when thp not enabled Chunyu Hu
2026-03-30 15:14 ` [PATCH v7 2/7] selftests/mm: soft-dirty: skip two tests when thp is not available Chunyu Hu
2026-03-30 15:14 ` [PATCH v7 3/7] selftests/mm: move write_file helper to vm_util Chunyu Hu
2026-03-30 15:15 ` [PATCH v7 4/7] selftests: ksft_exit_fail_perror: support printf style arguments Chunyu Hu
2026-03-31 10:31   ` Chunyu Hu [this message]
2026-03-31 19:09     ` Andrew Morton
2026-04-01 13:32       ` Chunyu Hu
2026-04-01 11:03   ` Mark Brown
2026-04-01 12:08     ` Thomas Weißschuh
2026-04-02  1:16       ` Chunyu Hu
2026-04-01 13:46     ` Chunyu Hu
     [not found]       ` <20260401143831.31f40405758f78d7955ff6db@linux-foundation.org>
2026-04-02  1:13         ` Chunyu Hu
2026-03-30 15:15 ` [PATCH v7 5/7] selftests/mm/vm_util: robust write_file() Chunyu Hu
2026-03-30 15:15 ` [PATCH v7 6/7] selftests/mm: split_huge_page_test: skip the test when thp is not available Chunyu Hu
2026-03-30 15:15 ` [PATCH v7 7/7] selftests/mm: transhuge_stress: skip the test when thp " Chunyu Hu
2026-03-30 19:25 ` [PATCH v7 0/7] 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=acuijiUs81Z7qYSL@gmail.com \
    --to=chuhu@redhat.com \
    --cc=Liam.Howlett@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=baohua@kernel.org \
    --cc=baolin.wang@linux.alibaba.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=ljs@kernel.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.