aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/mvm/d3.c
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2013-02-10 06:07:08 -0500
committerJohannes Berg <johannes.berg@intel.com>2013-02-11 05:56:41 -0500
commita3777e0fdd4abb2f04202580c236d64ecdaac6f2 (patch)
tree541d069c517a7298c32179b610e9968866c19770 /drivers/net/wireless/iwlwifi/mvm/d3.c
parentc3eb536aabb966542a0b6b09ad38cc43abe9ad1a (diff)
iwlwifi: mvm: fix locking in iwl_mvm_ipv6_addr_change
inet6_dev->lock can be taken from a timer. Disabled bottom halves when we take it. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/d3.c')
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/d3.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/d3.c b/drivers/net/wireless/iwlwifi/mvm/d3.c
index 9a95c374990d..5b2c675a8752 100644
--- a/drivers/net/wireless/iwlwifi/mvm/d3.c
+++ b/drivers/net/wireless/iwlwifi/mvm/d3.c
@@ -97,14 +97,14 @@ void iwl_mvm_ipv6_addr_change(struct ieee80211_hw *hw,
97 struct inet6_ifaddr *ifa; 97 struct inet6_ifaddr *ifa;
98 int idx = 0; 98 int idx = 0;
99 99
100 read_lock(&idev->lock); 100 read_lock_bh(&idev->lock);
101 list_for_each_entry(ifa, &idev->addr_list, if_list) { 101 list_for_each_entry(ifa, &idev->addr_list, if_list) {
102 mvmvif->target_ipv6_addrs[idx] = ifa->addr; 102 mvmvif->target_ipv6_addrs[idx] = ifa->addr;
103 idx++; 103 idx++;
104 if (idx >= IWL_PROTO_OFFLOAD_NUM_IPV6_ADDRS) 104 if (idx >= IWL_PROTO_OFFLOAD_NUM_IPV6_ADDRS)
105 break; 105 break;
106 } 106 }
107 read_unlock(&idev->lock); 107 read_unlock_bh(&idev->lock);
108 108
109 mvmvif->num_target_ipv6_addrs = idx; 109 mvmvif->num_target_ipv6_addrs = idx;
110} 110}