Message ID | 96f5bb5018167e8d327d7613674cc1f2a81fe99f.1499137698.git.sean.wang@mediatek.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: <sean.wang@mediatek.com> Date: Tue, 4 Jul 2017 11:17:36 +0800 > From: Sean Wang <sean.wang@mediatek.com> > > Lockdep found an inconsistent lock state when mtk_get_stats64 is called > in user context while NAPI updates MAC statistics in softirq. > > Use spin_trylock_bh/spin_unlock_bh fix following lockdep warning. ... > Signed-off-by: Sean Wang <sean.wang@mediatek.com> Good catch, applied, thanks.
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c index 16f9755..8a2acb8 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -470,9 +470,9 @@ static void mtk_get_stats64(struct net_device *dev, unsigned int start; if (netif_running(dev) && netif_device_present(dev)) { - if (spin_trylock(&hw_stats->stats_lock)) { + if (spin_trylock_bh(&hw_stats->stats_lock)) { mtk_stats_update_mac(mac); - spin_unlock(&hw_stats->stats_lock); + spin_unlock_bh(&hw_stats->stats_lock); } } @@ -2156,9 +2156,9 @@ static void mtk_get_ethtool_stats(struct net_device *dev, return; if (netif_running(dev) && netif_device_present(dev)) { - if (spin_trylock(&hwstats->stats_lock)) { + if (spin_trylock_bh(&hwstats->stats_lock)) { mtk_stats_update_mac(mac); - spin_unlock(&hwstats->stats_lock); + spin_unlock_bh(&hwstats->stats_lock); } }