Re: [PATCH v2 2/3] checkpatch: handle new pr_<level>_cont macros

From: Joe Perches
Date: Fri Nov 25 2022 - 15:17:45 EST


On Fri, 2022-11-25 at 20:09 +0100, Thomas Weißschuh wrote:
> These new macros from include/linux/printk.h replace the usage of plain
> pr_cont().
[]
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 1e5e66ae5a52..fb1747639c9c 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -590,7 +590,7 @@ our $zero_initializer = qr{(?:(?:0[xX])?0+$Int_type?|NULL|false)\b};
>
> our $logFunctions = qr{(?x:
> printk(?:_ratelimited|_once|_deferred_once|_deferred|)|
> - (?:[a-z0-9]+_){1,2}(?:printk|emerg|alert|crit|err|warning|warn|notice|info|debug|dbg|vdbg|devel|cont|WARN)(?:_ratelimited|_once|)|
> + (?:[a-z0-9]+_){1,2}(?:printk|emerg|alert|crit|err|warning|warn|notice|info|debug|dbg|vdbg|devel|cont|WARN)(?:_ratelimited|_once|_cont|)|

OK

> TP_printk|
> WARN(?:_RATELIMIT|_ONCE|)|
> panic|
> @@ -6374,11 +6374,17 @@ sub process {
> }
>
> # check for logging continuations
> - if ($line =~ /\bprintk\s*\(\s*KERN_CONT\b|\bpr_cont\s*\(/) {
> + if ($line =~ /\bprintk\s*\(\s*KERN_CONT\b|\bpr_([a-z]+_)?cont\s*\(/) {
> WARN("LOGGING_CONTINUATION",
> "Avoid logging continuation uses where feasible\n" . $herecurr);
> }

OK

> +# check for logging continuations without explicit level
> + if ($line =~ /\bpr_cont\s*\(/) {
> + WARN("LOGGING_CONTINUATION_WITHOUT_LEVEL",
> + "Avoid logging continuation without level\n" . $herecurr);
> + }
> +

Not so sure about this one.

I think relatively few situations are going to require interleaving avoidance.

> # check for unnecessary use of %h[xudi] and %hh[xudi] in logging functions
> if (defined $stat &&
> $line =~ /\b$logFunctions\s*\(/ &&