]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
printf: convert test_hashed into macro
authorTamir Duberstein <tamird@kernel.org>
Wed, 21 Jan 2026 16:10:08 +0000 (11:10 -0500)
committerPetr Mladek <pmladek@suse.com>
Wed, 28 Jan 2026 09:19:40 +0000 (10:19 +0100)
This allows the compiler to check the arguments against the __printf()
attribute on __test(). This produces better diagnostics when incorrect
inputs are passed.

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202512061600.89CKQ3ag-lkp@intel.com/
Signed-off-by: Tamir Duberstein <tamird@kernel.org>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://patch.msgid.link/20260121-printf-kunit-printf-attr-v3-1-4144f337ec8b@kernel.org
Signed-off-by: Petr Mladek <pmladek@suse.com>
lib/tests/printf_kunit.c

index 7617e5b8b02cc2ae63f636cba2d96b02fe94f112..f6f21b445ece1a43c22f3c97c5835a42c1c61089 100644 (file)
@@ -266,15 +266,17 @@ hash_pointer(struct kunit *kunittest)
        KUNIT_EXPECT_MEMNEQ(kunittest, buf, PTR_STR, PTR_WIDTH);
 }
 
-static void
-test_hashed(struct kunit *kunittest, const char *fmt, const void *p)
-{
-       char buf[PLAIN_BUF_SIZE];
-
-       plain_hash_to_buffer(kunittest, p, buf, PLAIN_BUF_SIZE);
-
-       test(buf, fmt, p);
-}
+/*
+ * This is a macro so that the compiler can compare its arguments to the
+ * __printf() attribute on __test(). This cannot be a function with a __printf()
+ * attribute because GCC requires __printf() functions to be variadic.
+ */
+#define test_hashed(kunittest, fmt, p)                                         \
+       do {                                                                    \
+               char buf[PLAIN_BUF_SIZE];                                       \
+               plain_hash_to_buffer(kunittest, p, buf, PLAIN_BUF_SIZE);        \
+               test(buf, fmt, p);                                              \
+       } while (0)
 
 /*
  * NULL pointers aren't hashed.