Messages in this thread Patch in this message | | | From | Andi Kleen <> | Subject | [PATCH 11/11] checkpatch: Check for spin_is_locked | Date | Fri, 16 Mar 2012 12:01:04 -0700 |
| |
From: Andi Kleen <ak@linux.intel.com>
spin_is_locked is usually misued. In checkpatch.pl
- warn when it is used at all - error out when it is asserted on free, because that's usually broken (e.g. doesn't work on on uni processor builds). Recommend lockdep_assert_held() instead.
Cc: Andy Whitcroft <apw@canonical.com> Signed-off-by: Andi Kleen <ak@linux.intel.com> --- scripts/checkpatch.pl | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index a3b9782..9904547 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -3330,6 +3330,20 @@ sub process { } } +# spin_is_locked is usually misused. warn about it. + if ($line =~ /\bspin_is_locked\s*\(/) { + # BUG_ON/WARN_ON(!spin_is_locked() is generally a bug + if ($line =~ /(BUG_ON|WARN_ON|ASSERT)\s*\(!spin_is_locked/) { + ERROR("ASSERT_SPIN_IS_LOCKED", + "Use lockdep_assert_held() instead of asserts on !spin_is_locked\n" + . $herecurr); + } else { + WARN("SPIN_IS_LOCKED", + "spin_is_locked is very rarely correctly used. Please reconsider\n" + . $herecurr) + } + } + # check for lockdep_set_novalidate_class if ($line =~ /^.\s*lockdep_set_novalidate_class\s*\(/ || $line =~ /__lockdep_no_validate__\s*\)/ ) { -- 1.7.7.6
| |