FAILED: patch "[PATCH] net: mscc: ocelot: fix race between ndo_get_stats64 and" failed to apply to 5.4-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 18d8e67df184081bc6ce6220a2dd965cfd3d7e6b Mon Sep 17 00:00:00 2001
From: Vladimir Oltean <[email protected]>
Date: Tue, 16 Aug 2022 16:53:49 +0300
Subject: [PATCH] net: mscc: ocelot: fix race between ndo_get_stats64 and
ocelot_check_stats_work
The 2 methods can run concurrently, and one will change the window of counters (SYS_STAT_CFG_STAT_VIEW) that the other sees. The fix is similar to what commit 7fbf6795d127 ("net: mscc: ocelot: fix mutex lock error during ethtool stats read") has done for ethtool -S.
drivers/net/ethernet/mscc/ocelot_net.c +4 -0
@@ -726,6 +726,8 @@ static void ocelot_get_stats64(struct net_device *dev,struct ocelot *ocelot = priv->port.ocelot;int port = priv->port.index; +spin_lock (&ocelot->stats_lock); +/* Configure the port to read the stats from */ ocelot_write (ocelot,SYS_STAT_CFG_STAT_VIEW (port),SYS_STAT_CFG );
@@ -758,6 +760,8 @@ static void ocelot_get_stats64(struct net_device *dev, stats->tx_dropped =ocelot_read (ocelot,SYS_COUNT_TX_DROPS ) +ocelot_read (ocelot,SYS_COUNT_TX_AGING ); stats->collisions =ocelot_read (ocelot,SYS_COUNT_TX_COLLISION ); + +spin_unlock (&ocelot->stats_lock); } static int ocelot_port_fdb_add(struct ndmsg *ndm, struct nlattr *tb[],