On Fri, 2022-06-10 at 07:20 +0200, Greg Kroah-Hartman wrote:
On Thu, Jun 09, 2022 at 04:16:16PM -0700, Bill Wendling wrote:
On Thu, Jun 9, 2022 at 4:03 PM Jan Engelhardt jengelh@inai.de wrote:
On Friday 2022-06-10 00:49, Bill Wendling wrote:
On Thu, Jun 9, 2022 at 3:25 PM Andrew Morton akpm@linux-foundation.org wrote:
On Thu, 9 Jun 2022 22:16:19 +0000 Bill Wendling morbo@google.com wrote:
This patch set fixes some clang warnings when -Wformat is enabled.
tldr:
printk(msg);
printk("%s", msg);
Otherwise these changes are a useless consumer of runtime resources.
Calling a "printf" style function is already insanely expensive.
I expect the printk code itself dominates, not the % scan cost.
Perhaps you can split vprintk_store in the middle (after the call to vsnprintf), and offer the second half as a function of its own (e.g. "puts"). Then the tldr could be
- printk(msg);
- puts(msg);
That might be a nice compromise. Andrew, what do you think?
You would need to do that for all of the dev_printk() variants, so I doubt that would ever be all that useful as almost no one should be using a "raw" printk() these days.
True. The kernel has ~20K variants like that.
$ git grep -P '\b(?:(?:\w+_){1,3}(?:alert|emerg|crit|err|warn|notice|info|cont|debug|dbg)|printk)\s*(".*"\s*)\s*;' | wc -l 21160
That doesn't include the ~3K uses like
#define foo "bar" printk(foo);
$ git grep -P '\b(?:(?:\w+_){1,3}(?:alert|emerg|crit|err|warn|info|notice|debug|dbg|cont)|printk)\s*((?:\s*\w+){1,3}\s*)\s*;'|wc -l 2922
There are apparently only a few hundred uses of variants like:
printk("%s", foo)
$ git grep -P '\b(?:(?:\w+_){1,3}(?:alert|emerg|crit|err|warn|info|notice|debug|dbg|cont)|printk)\s*(\s*"%s(?:\n)?"\s*,\s*(?:".*"|\w+)\s*)\s*;' | wc -l 305
unless I screwed up my greps (which of course is quite possible)