Re: [PATCH v8 3/4] scanf: convert self-test to KUnit

From: Tamir Duberstein
Date: Wed Mar 05 2025 - 06:38:00 EST


On Wed, Mar 5, 2025 at 4:47 AM Petr Mladek <pmladek@xxxxxxxx> wrote:
>
> On Sat 2025-02-15 14:52:22, Tamir Duberstein wrote:
> > On Sat, Feb 15, 2025 at 1:51 PM kernel test robot <lkp@xxxxxxxxx> wrote:
> > >
> > > Hi Tamir,
> > >
> > > kernel test robot noticed the following build warnings:
> > >
> > > [auto build test WARNING on 7b7a883c7f4de1ee5040bd1c32aabaafde54d209]
> > >
> > > url:
> > https://github.com/intel-lab-lkp/linux/commits/Tamir-Duberstein/scanf-implicate-test-line-in-failure-messages/20250215-002302
> > > base: 7b7a883c7f4de1ee5040bd1c32aabaafde54d209
> > > patch link:
> > https://lore.kernel.org/r/20250214-scanf-kunit-convert-v8-3-5ea50f95f83c%40gmail.com
> > > patch subject: [PATCH v8 3/4] scanf: convert self-test to KUnit
> > > config: sh-randconfig-002-20250216 (
> > https://download.01.org/0day-ci/archive/20250216/202502160245.KUrryBJR-lkp@xxxxxxxxx/config
> > )
> > > compiler: sh4-linux-gcc (GCC) 14.2.0
> > > reproduce (this is a W=1 build): (
> > https://download.01.org/0day-ci/archive/20250216/202502160245.KUrryBJR-lkp@xxxxxxxxx/reproduce
> > )
> > >
> > > If you fix the issue in a separate patch/commit (i.e. not just a new
> > version of
> > > the same patch/commit), kindly add following tags
> > > | Reported-by: kernel test robot <lkp@xxxxxxxxx>
> > > | Closes:
> > https://lore.kernel.org/oe-kbuild-all/202502160245.KUrryBJR-lkp@xxxxxxxxx/
> > >
> > > All warnings (new ones prefixed by >>):
> > >
> > > In file included from <command-line>:
> > > lib/tests/scanf_kunit.c: In function 'numbers_list_ll':
> > > >> include/linux/compiler.h:197:61: warning: function 'numbers_list_ll'
> > might be a candidate for 'gnu_scanf' format attribute
> > [-Wsuggest-attribute=format]
> >
> > I am not able to reproduce these warnings with clang 19.1.7. They also
> > don't obviously make sense to me.
>
> I have reproduced the problem with gcc:
>
> $> gcc --version
> gcc (SUSE Linux) 14.2.1 20250220 [revision 9ffecde121af883b60bbe60d00425036bc873048]
>
> $> make W=1 lib/test_scanf.ko
> CALL scripts/checksyscalls.sh
> DESCEND objtool
> INSTALL libsubcmd_headers
> CC [M] lib/test_scanf.o
> In file included from <command-line>:
> lib/test_scanf.c: In function ‘numbers_list_ll’:
> ./include/linux/compiler.h:197:61: warning: function ‘numbers_list_ll’ might be a candidate for ‘gnu_scanf’ format attribute [-Wsuggest-attribute=format]
> 197 | #define __BUILD_BUG_ON_ZERO_MSG(e, msg) ((int)sizeof(struct {_Static_assert(!(e), msg);}))
> | ^
> [...]
>
> It seems that it is a regression introduced by the first
> patch of this patch set. And the fix is:
>
> diff --git a/lib/test_scanf.c b/lib/test_scanf.c
> index d1664e0d0138..e65b10c3dc11 100644
> --- a/lib/test_scanf.c
> +++ b/lib/test_scanf.c
> @@ -27,7 +27,7 @@ static struct rnd_state rnd_state __initdata;
> typedef int (*check_fn)(const char *file, const int line, const void *check_data,
> const char *string, const char *fmt, int n_args, va_list ap);
>
> -static void __scanf(6, 0) __init
> +static void __scanf(6, 8) __init
> _test(const char *file, const int line, check_fn fn, const void *check_data, const char *string,
> const char *fmt, int n_args, ...)
> {
>
> Best Regards,
> Petr

Thanks for the review! I'll respin later today unless you let me know otherwise.

Cheers.
Tamir