2022-02-03 04:27:39

by Maninder Singh

[permalink] [raw]
Subject: [PATCH RESEND v2] scripts/checkpatch.pl: remove _deferred and _deferred_once false warning

printk_deferred and printk_deferred_once requires LOGLEVEL in argument,
but checkpatch.pl reports it as warning:

WARNING: Possible unnecessary KERN_ALERT
printk_deferred(KERN_ALERT "checking deferred\n");

As suggested by Andy, made 2 functions from logFunction.

1. logFunction: with all checks
2. logFunctionCore: without printk(?:_ratelimited|_once|_deferred) checking

and call logFunctionCore instead of logFunction for checking of loglevel,
which will exclude checking of printk(?:_ratelimited|_once|_deferred).

This way, there is no need to maintain same stanza at places for removing
printk flavours.

Co-developed-by: Vaneet Narang <[email protected]>
Signed-off-by: Vaneet Narang <[email protected]>
Signed-off-by: Maninder Singh <[email protected]>
---
v1 -> v2: made 2 functions to remove _deferred and _deferred_once
as suggested by Andy Whitcroft.

scripts/checkpatch.pl | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index b01c36a15d9d..a6fa0c7360be 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -584,8 +584,7 @@ our $typeTypedefs = qr{(?x:

our $zero_initializer = qr{(?:(?:0[xX])?0+$Int_type?|NULL|false)\b};

-our $logFunctions = qr{(?x:
- printk(?:_ratelimited|_once|_deferred_once|_deferred|)|
+our $logFunctionsCore = qr{(?x:
(?:[a-z0-9]+_){1,2}(?:printk|emerg|alert|crit|err|warning|warn|notice|info|debug|dbg|vdbg|devel|cont|WARN)(?:_ratelimited|_once|)|
TP_printk|
WARN(?:_RATELIMIT|_ONCE|)|
@@ -594,6 +593,11 @@ our $logFunctions = qr{(?x:
seq_vprintf|seq_printf|seq_puts
)};

+our $logFunctions = qr{(?x:
+ printk(?:_ratelimited|_once|_deferred_once|_deferred|)|
+ $logFunctionsCore
+)};
+
our $allocFunctions = qr{(?x:
(?:(?:devm_)?
(?:kv|k|v)[czm]alloc(?:_array)?(?:_node)? |
@@ -6298,8 +6302,7 @@ sub process {
}

# check for logging functions with KERN_<LEVEL>
- if ($line !~ /printk(?:_ratelimited|_once)?\s*\(/ &&
- $line =~ /\b$logFunctions\s*\(.*\b(KERN_[A-Z]+)\b/) {
+ if ($line =~ /\b$logFunctionsCore\s*\(.*\b(KERN_[A-Z]+)\b/) {
my $level = $1;
if (WARN("UNNECESSARY_KERN_LEVEL",
"Possible unnecessary $level\n" . $herecurr) &&
--
2.17.1


2022-02-04 06:56:11

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH RESEND v2] scripts/checkpatch.pl: remove _deferred and _deferred_once false warning

On Wed, 2022-02-02 at 12:44 +0530, Maninder Singh wrote:
> printk_deferred and printk_deferred_once requires LOGLEVEL in argument,
> but checkpatch.pl reports it as warning:

When did that occur? Please reference the specific commit.
When printk_sched (now printk_deferred) was created it did not
allow KERN_<LEVEL>.

see commit 3ccf3e830615 ("printk/sched: Introduce special printk_sched() for those awkward moments")

There are many existing printk_deferred uses without KERN_<LEVEL>.

> WARNING: Possible unnecessary KERN_ALERT
> printk_deferred(KERN_ALERT "checking deferred\n");