On Wed, Aug 13, 2014 at 04:02:01PM +0100, Matt Fleming wrote: > On Wed, 13 Aug, at 07:37:37AM, Guenter Roeck wrote: > > > > WARN_ON and WARN_ON_SMP are unconditional. lockdep_assert_held() > > is only active if lockdep debugging is enabled. Not knowing the code, > > nor the reason why the unconditional method was chosen, I prefer > > to refrain from functional changes and limit myself to bug fixes. > > As the author of that code, I feel confident telling you that the > unconditional method was used because the author is a boob. The code > isn't so important that we need to unconditionally check the locks, and > indeed it's possible to run into all sorts of problems when you don't > use the standard lock-checking functions - the non-SMP crash being a > good example.
If you want to actually force a BUG_ON if the spinlock is not taken, even for non-debug kernels, you can use assert_spin_locked(). This translates to a BUG_ON(!raw_spin_is_locked(x)) on SMP kernels, and a no-op on UP kernels. If you're confident in your testing that any problems would be discovered before you push your patches to linus (and you actually use lockdep in your testing :-), then lockdep_assert_held() doesn't add any overhead if !lockdep, and so it might be a better choice for you. - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/