From: Vladislav Zolotarov <vladz@broadcom.com>
Date: Sun, 9 Jan 2011 02:20:34 +0000 (+0000)
Subject: bnx2x: Fix the race on bp->stats_pending.
X-Git-Tag: firefly_0821_release~7613^2~2412^2~249
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=9bcb8018cf7af1f00f35cad4b121897cac077269;p=firefly-linux-kernel-4.4.55.git

bnx2x: Fix the race on bp->stats_pending.

Fix the race on bp->stats_pending between the timer and a LINK_UP event
handler.

Signed-off-by: Vladislav Zolotarov <vladz@broadcom.com>
Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---

diff --git a/drivers/net/bnx2x/bnx2x_stats.c b/drivers/net/bnx2x/bnx2x_stats.c
index 6e4d9b144cc4..bda60d590fa8 100644
--- a/drivers/net/bnx2x/bnx2x_stats.c
+++ b/drivers/net/bnx2x/bnx2x_stats.c
@@ -158,6 +158,11 @@ static void bnx2x_storm_stats_post(struct bnx2x *bp)
 
 		spin_lock_bh(&bp->stats_lock);
 
+		if (bp->stats_pending) {
+			spin_unlock_bh(&bp->stats_lock);
+			return;
+		}
+
 		ramrod_data.drv_counter = bp->stats_counter++;
 		ramrod_data.collect_port = bp->port.pmf ? 1 : 0;
 		for_each_eth_queue(bp, i)