aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Efremov <[email protected]>2019-09-25 16:49:25 -0700
committerLinus Torvalds <[email protected]>2019-09-25 17:51:42 -0700
commitde3f186f87cf15bed8d13fedafb5bcad0167fc6d (patch)
treea3207fcc15d1708ff81182e1cc77e50feb4254b7
parentc7cc8d77316b4386622b2dbd29de800df7b05099 (diff)
checkpatch: check for nested (un)?likely() calls
IS_ERR(), IS_ERR_OR_NULL(), IS_ERR_VALUE() and WARN*() already contain unlikely() optimization internally. Thus, there is no point in calling these functions and defines under likely()/unlikely(). This check is based on the coccinelle rule developed by Enrico Weigelt https://lore.kernel.org/lkml/[email protected]/ Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Denis Efremov <[email protected]> Cc: Joe Perches <[email protected]> Cc: Alexander Viro <[email protected]> Cc: Anton Altaparmakov <[email protected]> Cc: Boris Ostrovsky <[email protected]> Cc: Boris Pismenny <[email protected]> Cc: Darrick J. Wong <[email protected]> Cc: "David S. Miller" <[email protected]> Cc: Denis Efremov <[email protected]> Cc: Dennis Dalessandro <[email protected]> Cc: Inaky Perez-Gonzalez <[email protected]> Cc: Juergen Gross <[email protected]> Cc: Leon Romanovsky <[email protected]> Cc: Mike Marciniszyn <[email protected]> Cc: Rob Clark <[email protected]> Cc: Saeed Mahameed <[email protected]> Cc: Sean Paul <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
-rwxr-xr-xscripts/checkpatch.pl6
1 files changed, 6 insertions, 0 deletions
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 4eb355d8ae73..6fcc66afb088 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -6507,6 +6507,12 @@ sub process {
"Using $1 should generally have parentheses around the comparison\n" . $herecurr);
}
+# nested likely/unlikely calls
+ if ($line =~ /\b(?:(?:un)?likely)\s*\(\s*!?\s*(IS_ERR(?:_OR_NULL|_VALUE)?|WARN)/) {
+ WARN("LIKELY_MISUSE",
+ "nested (un)?likely() calls, $1 already uses unlikely() internally\n" . $herecurr);
+ }
+
# whine mightly about in_atomic
if ($line =~ /\bin_atomic\s*\(/) {
if ($realfile =~ m@^drivers/@) {