From b88cda3ecb0897035dcbcb3833c4a41f74522a28 Mon Sep 17 00:00:00 2001 From: Andi Kleen Date: Thu, 3 May 2012 15:44:11 +1000 Subject: [PATCH] checkpatch: check for spin_is_locked() 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. [joe@perches.com: some improvements] Signed-off-by: Andi Kleen Cc: Andy Whitcroft Cc: Joe Perches Signed-off-by: Andrew Morton --- scripts/checkpatch.pl | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index faea0ec612bf..b8ed516b34ec 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -3452,6 +3452,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("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 usually misused. See Documentation/spinlocks.txt\n" + . $herecurr) + } + } + # check for lockdep_set_novalidate_class if ($line =~ /^.\s*lockdep_set_novalidate_class\s*\(/ || $line =~ /__lockdep_no_validate__\s*\)/ ) { -- 2.39.5