From: Johannes Berg <johannes.berg@xxxxxxxxx> Instead of using a WARN_ON(!mutex_is_locked()) use lockdep_assert_held() which compiles away completely when lockdep isn't enabled, and also is a more accurate assertion since it checks that the current thread is holding the mutex. Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx> --- net/mac80211/chan.c | 2 +- net/mac80211/key.c | 2 +- net/mac80211/mlme.c | 2 +- net/mac80211/sta_info.c | 2 +- net/mac80211/util.c | 4 ++-- net/wireless/core.h | 9 ++++++--- net/wireless/reg.c | 6 +++++- 7 files changed, 17 insertions(+), 10 deletions(-) --- wireless-testing.orig/net/mac80211/chan.c 2010-09-15 13:16:28.000000000 +0200 +++ wireless-testing/net/mac80211/chan.c 2010-09-15 13:17:15.000000000 +0200 @@ -11,7 +11,7 @@ __ieee80211_get_channel_mode(struct ieee { struct ieee80211_sub_if_data *sdata; - WARN_ON(!mutex_is_locked(&local->iflist_mtx)); + lockdep_assert_held(&local->iflist_mtx); list_for_each_entry(sdata, &local->interfaces, list) { if (sdata == ignore) --- wireless-testing.orig/net/mac80211/key.c 2010-09-15 13:16:30.000000000 +0200 +++ wireless-testing/net/mac80211/key.c 2010-09-15 13:17:40.000000000 +0200 @@ -49,7 +49,7 @@ static const u8 bcast_addr[ETH_ALEN] = { static void assert_key_lock(struct ieee80211_local *local) { - WARN_ON(!mutex_is_locked(&local->key_mtx)); + lockdep_assert_held(&local->key_mtx); } static struct ieee80211_sta *get_sta_for_key(struct ieee80211_key *key) --- wireless-testing.orig/net/mac80211/mlme.c 2010-09-15 13:16:28.000000000 +0200 +++ wireless-testing/net/mac80211/mlme.c 2010-09-15 13:17:15.000000000 +0200 @@ -92,7 +92,7 @@ enum rx_mgmt_action { /* utils */ static inline void ASSERT_MGD_MTX(struct ieee80211_if_managed *ifmgd) { - WARN_ON(!mutex_is_locked(&ifmgd->mtx)); + lockdep_assert_held(&ifmgd->mtx); } /* --- wireless-testing.orig/net/mac80211/sta_info.c 2010-09-15 13:16:29.000000000 +0200 +++ wireless-testing/net/mac80211/sta_info.c 2010-09-15 13:17:40.000000000 +0200 @@ -280,7 +280,7 @@ static int sta_info_finish_insert(struct unsigned long flags; int err = 0; - WARN_ON(!mutex_is_locked(&local->sta_mtx)); + lockdep_assert_held(&local->sta_mtx); /* notify driver */ if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN) --- wireless-testing.orig/net/mac80211/util.c 2010-09-15 13:17:08.000000000 +0200 +++ wireless-testing/net/mac80211/util.c 2010-09-15 13:17:36.000000000 +0200 @@ -1296,9 +1296,9 @@ void ieee80211_recalc_smps(struct ieee80 int count = 0; if (forsdata) - WARN_ON(!mutex_is_locked(&forsdata->u.mgd.mtx)); + lockdep_assert_held(&forsdata->u.mgd.mtx); - WARN_ON(!mutex_is_locked(&local->iflist_mtx)); + lockdep_assert_held(&local->iflist_mtx); /* * This function could be improved to handle multiple --- wireless-testing.orig/net/wireless/core.h 2010-09-15 13:19:31.000000000 +0200 +++ wireless-testing/net/wireless/core.h 2010-09-15 13:21:19.000000000 +0200 @@ -95,7 +95,10 @@ extern struct mutex cfg80211_mutex; extern struct list_head cfg80211_rdev_list; extern int cfg80211_rdev_list_generation; -#define assert_cfg80211_lock() WARN_ON(!mutex_is_locked(&cfg80211_mutex)) +static inline void assert_cfg80211_lock(void) +{ + lockdep_assert_held(&cfg80211_mutex); +} /* * You can use this to mark a wiphy_idx as not having an associated wiphy. @@ -202,8 +205,8 @@ static inline void wdev_unlock(struct wi mutex_unlock(&wdev->mtx); } -#define ASSERT_RDEV_LOCK(rdev) WARN_ON(!mutex_is_locked(&(rdev)->mtx)); -#define ASSERT_WDEV_LOCK(wdev) WARN_ON(!mutex_is_locked(&(wdev)->mtx)); +#define ASSERT_RDEV_LOCK(rdev) lockdep_assert_held(&(rdev)->mtx) +#define ASSERT_WDEV_LOCK(wdev) lockdep_assert_held(&(wdev)->mtx) enum cfg80211_event_type { EVENT_CONNECT_RESULT, --- wireless-testing.orig/net/wireless/reg.c 2010-09-15 13:19:31.000000000 +0200 +++ wireless-testing/net/wireless/reg.c 2010-09-15 13:20:18.000000000 +0200 @@ -74,7 +74,11 @@ const struct ieee80211_regdomain *cfg802 * - last_request */ static DEFINE_MUTEX(reg_mutex); -#define assert_reg_lock() WARN_ON(!mutex_is_locked(®_mutex)) + +static inline void assert_reg_lock(void) +{ + lockdep_assert_held(®_mutex); +} /* Used to queue up regulatory hints */ static LIST_HEAD(reg_requests_list); -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html