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/1559767582-11081-1-git-send-email-info@metux.net/ Link: http://lkml.kernel.org/r/20190829165025.15750-1-efremov@linux.com Signed-off-by: Denis Efremov <efremov@linux.com> Cc: Joe Perches <joe@perches.com> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: Anton Altaparmakov <anton@tuxera.com> Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com> Cc: Boris Pismenny <borisp@mellanox.com> Cc: Darrick J. Wong <darrick.wong@oracle.com> Cc: "David S. Miller" <davem@davemloft.net> Cc: Denis Efremov <efremov@linux.com> Cc: Dennis Dalessandro <dennis.dalessandro@intel.com> Cc: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com> Cc: Juergen Gross <jgross@suse.com> Cc: Leon Romanovsky <leon@kernel.org> Cc: Mike Marciniszyn <mike.marciniszyn@intel.com> Cc: Rob Clark <robdclark@gmail.com> Cc: Saeed Mahameed <saeedm@mellanox.com> Cc: Sean Paul <sean@poorly.run> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
c7cc8d7731
commit
de3f186f87
|
@ -6507,6 +6507,12 @@ sub process {
|
||||||
"Using $1 should generally have parentheses around the comparison\n" . $herecurr);
|
"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
|
# whine mightly about in_atomic
|
||||||
if ($line =~ /\bin_atomic\s*\(/) {
|
if ($line =~ /\bin_atomic\s*\(/) {
|
||||||
if ($realfile =~ m@^drivers/@) {
|
if ($realfile =~ m@^drivers/@) {
|
||||||
|
|
Loading…
Reference in New Issue