summary refs log tree commit diff
path: root/lib/test_printf.c
diff options
context:
space:
mode:
authorPetr Mladek <pmladek@suse.com>2019-04-17 13:53:47 +0200
committerPetr Mladek <pmladek@suse.com>2019-04-26 16:20:20 +0200
commit0b74d4d763fd4ee9daa53889324300587c015338 (patch)
treef3ea32ac58c04f182fda454f6ed7a009d7bb2452 /lib/test_printf.c
parent798cc27a305e7b35b7bff3a71257e6fe57f70bc1 (diff)
downloadlinux-0b74d4d763fd4ee9daa53889324300587c015338.tar.gz
vsprintf: Consolidate handling of unknown pointer specifiers
There are few printk formats that make sense only with two or more
specifiers. Also some specifiers make sense only when a kernel feature
is enabled.

The handling of unknown specifiers is inconsistent and not helpful.
Using WARN() looks like an overkill for this type of error. pr_warn()
is not good either. It would by handled via printk_safe buffer and
it might be hard to match it with the problematic string.

A reasonable compromise seems to be writing the unknown format specifier
into the original string with a question mark, for example (%pC?).
It should be self-explaining enough. Note that it is in brackets
to follow the (null) style.

Note that it introduces a warning about that test_hashed() function
is unused. It is going to be used again by a later patch.

Link: http://lkml.kernel.org/r/20190417115350.20479-8-pmladek@suse.com
To: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "Tobin C . Harding" <me@tobin.cc>
Cc: Joe Perches <joe@perches.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Michal Hocko <mhocko@suse.cz>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Cc: linux-kernel@vger.kernel.org
Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Petr Mladek <pmladek@suse.com>
Diffstat (limited to 'lib/test_printf.c')
-rw-r--r--lib/test_printf.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/lib/test_printf.c b/lib/test_printf.c
index 659b6cc0d483..250ee864b8b8 100644
--- a/lib/test_printf.c
+++ b/lib/test_printf.c
@@ -462,8 +462,7 @@ struct_rtc_time(void)
 		.tm_year = 118,
 	};
 
-	test_hashed("%pt", &tm);
-
+	test("(%ptR?)", "%pt", &tm);
 	test("2018-11-26T05:35:43", "%ptR", &tm);
 	test("0118-10-26T05:35:43", "%ptRr", &tm);
 	test("05:35:43|2018-11-26", "%ptRt|%ptRd", &tm, &tm);