From 26b303cff43af77a753180568ed94d68d18e72d3 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Wed, 12 Jan 2011 13:40:33 +0100 Subject: [PATCH] --- yaml --- r: 231913 b: refs/heads/master c: 681c4d07dd5b2ce2ad9f6dbbf7841e479fbc7754 h: refs/heads/master i: 231911: d209d5d39d09b676b104c096fb12af846767e9b1 v: v3 --- [refs] | 2 +- trunk/net/mac80211/main.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 5ad9f75a8819..8c551d2ce7ce 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8d661f1e462d50bd83de87ee628aaf820ce3c66c +refs/heads/master: 681c4d07dd5b2ce2ad9f6dbbf7841e479fbc7754 diff --git a/trunk/net/mac80211/main.c b/trunk/net/mac80211/main.c index 485d36bc9a46..a46ff06d7cb8 100644 --- a/trunk/net/mac80211/main.c +++ b/trunk/net/mac80211/main.c @@ -39,6 +39,8 @@ module_param(ieee80211_disable_40mhz_24ghz, bool, 0644); MODULE_PARM_DESC(ieee80211_disable_40mhz_24ghz, "Disable 40MHz support in the 2.4GHz band"); +static struct lock_class_key ieee80211_rx_skb_queue_class; + void ieee80211_configure_filter(struct ieee80211_local *local) { u64 mc; @@ -569,7 +571,15 @@ struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len, spin_lock_init(&local->filter_lock); spin_lock_init(&local->queue_stop_reason_lock); - skb_queue_head_init(&local->rx_skb_queue); + /* + * The rx_skb_queue is only accessed from tasklets, + * but other SKB queues are used from within IRQ + * context. Therefore, this one needs a different + * locking class so our direct, non-irq-safe use of + * the queue's lock doesn't throw lockdep warnings. + */ + skb_queue_head_init_class(&local->rx_skb_queue, + &ieee80211_rx_skb_queue_class); INIT_DELAYED_WORK(&local->scan_work, ieee80211_scan_work);