]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
tg3: Fix race condition in tg3_get_stats64()
authorMichael Chan <mchan@broadcom.com>
Sun, 29 Jul 2012 19:15:44 +0000 (19:15 +0000)
committerJoe Jin <joe.jin@oracle.com>
Tue, 28 Aug 2012 07:23:10 +0000 (15:23 +0800)
Spinlock should be taken before checking for tp->hw_stats.

(cherry picked from commit 0f566b208b41918053b2e67399673aaec02dde5d)
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
drivers/net/tg3.c

index 3d46125d20db8ab424ca5756f2f74b903af4b306..9ac7ff869fc601af93de6a774cf157c9e1c457b4 100644 (file)
@@ -12570,10 +12570,12 @@ static struct rtnl_link_stats64 *tg3_get_stats64(struct net_device *dev,
 {
        struct tg3 *tp = netdev_priv(dev);
 
-       if (!tp->hw_stats)
+       spin_lock_bh(&tp->lock);
+       if (!tp->hw_stats) {
+               spin_unlock_bh(&tp->lock);
                return &tp->net_stats_prev;
+       }
 
-       spin_lock_bh(&tp->lock);
        tg3_get_nstats(tp, stats);
        spin_unlock_bh(&tp->lock);