aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2012-11-20 20:40:00 +0000
committerGabor Juhos <juhosg@openwrt.org>2012-11-20 20:40:00 +0000
commit82b57b0c283f4c1eb13c9c3e50551e1106e23245 (patch)
tree0ed321be9d35b6eebe8952fe4cb73b451d40b32b
parentc0f73ac607fceb00219fcf3b320837bdefad7c3b (diff)
downloadupstream-82b57b0c283f4c1eb13c9c3e50551e1106e23245.tar.gz
upstream-82b57b0c283f4c1eb13c9c3e50551e1106e23245.tar.bz2
upstream-82b57b0c283f4c1eb13c9c3e50551e1106e23245.zip
generic: ar8216: add missing locking calls
Fixes the following lockdep warning: [ 19.160000] ------------[ cut here ]------------ [ 19.160000] WARNING: at drivers/net/phy/ar8216.c:322 ar8216_rmw+0x54/0xa4() [ 19.170000] Modules linked in: nf_defrag_ipv4 nf_conntrack ehci_hcd sd_mod pppox ipt_REJECT xt_TCPMSS ipt_LOG xt_comment xt_multip ort xt_mac xt_limit iptable_mangle iptable_filter ip_tables xt_tcpudp x_tables ppp_async ppp_generic slhc ath9k(O) ath9k_common(O) at h9k_hw(O) ath(O) mac80211(O) usbcore usb_common scsi_mod nls_base crc7 crc_itu_t crc_ccitt cfg80211(O) compat(O) arc4 aes_generic cry pto_blkcipher cryptomgr aead crypto_hash crypto_algapi ledtrig_timer ledtrig_default_on leds_gpio gpio_button_hotplug(O) [ 19.210000] Call Trace: [ 19.220000] [<8028dc38>] dump_stack+0x8/0x34 [ 19.220000] [<80072da0>] warn_slowpath_common+0x78/0xa4 [ 19.230000] [<80072de4>] warn_slowpath_null+0x18/0x24 [ 19.230000] [<801de820>] ar8216_rmw+0x54/0xa4 [ 19.240000] [<801df460>] ar8216_mib_capture+0x70/0xd0 [ 19.240000] [<801df944>] ar8xxx_mib_work_func+0x34/0x98 [ 19.250000] [<80089a7c>] process_one_work+0x28c/0x460 [ 19.250000] [<8008a630>] worker_thread+0x22c/0x334 [ 19.260000] [<8008e544>] kthread+0x88/0x90 [ 19.260000] [<80065020>] kernel_thread_helper+0x10/0x18 [ 19.270000] [ 19.270000] ---[ end trace 22e9d696adfa6a08 ]--- Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 34281
-rw-r--r--target/linux/generic/files/drivers/net/phy/ar8216.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/target/linux/generic/files/drivers/net/phy/ar8216.c b/target/linux/generic/files/drivers/net/phy/ar8216.c
index a69d038cee..3801225600 100644
--- a/target/linux/generic/files/drivers/net/phy/ar8216.c
+++ b/target/linux/generic/files/drivers/net/phy/ar8216.c
@@ -373,9 +373,11 @@ ar8216_mib_capture(struct ar8216_priv *priv)
else
mib_func = AR8216_REG_MIB_FUNC;
+ mutex_lock(&priv->reg_mutex);
/* Capture the hardware statistics for all ports */
ar8216_rmw(priv, mib_func, AR8216_MIB_FUNC,
(AR8216_MIB_FUNC_CAPTURE << AR8216_MIB_FUNC_S));
+ mutex_unlock(&priv->reg_mutex);
/* Wait for the capturing to complete. */
ret = ar8216_reg_wait(priv, mib_func, AR8216_MIB_BUSY, 0, 10);