]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
eth: fbnic: Lock the tx_dropped update
authorMohsin Bashir <mohsin.bashr@gmail.com>
Sat, 2 Aug 2025 02:46:36 +0000 (19:46 -0700)
committerJakub Kicinski <kuba@kernel.org>
Tue, 5 Aug 2025 23:01:45 +0000 (16:01 -0700)
Wrap copying of drop stats on TX path from fbd->hw_stats by the
hw_stats_lock. Currently, it is being performed outside the lock and
another thread accessing fbd->hw_stats can lead to inconsistencies.

Fixes: 5f8bd2ce8269 ("eth: fbnic: add support for TMI stats")
Signed-off-by: Mohsin Bashir <mohsin.bashr@gmail.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250802024636.679317-3-mohsin.bashr@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/meta/fbnic/fbnic_netdev.c

index c0c9808afdd0af61bd5b8d888791916ecc99258a..e67e99487a271c77a762f53e97c094682a9468ea 100644 (file)
@@ -423,10 +423,12 @@ static void fbnic_get_stats64(struct net_device *dev,
        tx_dropped = stats->dropped;
 
        /* Record drops from Tx HW Datapath */
+       spin_lock(&fbd->hw_stats_lock);
        tx_dropped += fbd->hw_stats.tmi.drop.frames.value +
                      fbd->hw_stats.tti.cm_drop.frames.value +
                      fbd->hw_stats.tti.frame_drop.frames.value +
                      fbd->hw_stats.tti.tbi_drop.frames.value;
+       spin_unlock(&fbd->hw_stats_lock);
 
        stats64->tx_bytes = tx_bytes;
        stats64->tx_packets = tx_packets;