linux/drivers/net/dsa
Daniel Golle 9e92ad4630 net: dsa: mxl862xx: disable the stats poll on teardown
mxl862xx_setup() arms the stats poll before mxl862xx_setup_mdio(), and
nothing stops it until dsa_register_switch() has returned an error to
mxl862xx_probe(). DSA frees the dsa_port list before it returns, so a
poll that fires once .setup or a later step of dsa_tree_setup() has
failed walks freed ports. On shutdown the user ports stay registered,
and the WORK_STOPPED flag test in mxl862xx_get_stats64() is not atomic
with the cancel in mxl862xx_shutdown(), so a re-arm that read the flag
before it was set queues the poll after cancel_delayed_work_sync() has
returned.

Arm the poll once .setup has succeeded and stop it from a .teardown op,
which DSA calls on unregister and after a failed registration, in both
cases before it frees the ports. Use disable_delayed_work_sync() there
and in shutdown(): it drains a running poll as the cancel did and turns
every later attempt to queue the work into a no-op, so the re-arm
cannot bring the poll back. remove() and the probe error path only set
WORK_STOPPED, which crc_err_work tests before it walks the ports.

Fixes: a21d33a526 ("net: dsa: mxl862xx: implement .get_stats64")
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Link: https://patch.msgid.link/1eb6f7fc1789b67e4b11e3f4d5ff080d0b6f7cbb.1789045590.git.daniel@makrotopia.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-09-14 19:05:46 -07:00
..
b53 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-08-18 10:42:41 -07:00
hirschmann net: dsa: hellcreek: avoid devlink resource IDs collision with PARENT_TOP 2026-06-15 12:41:40 -07:00
lantiq net: dsa: lantiq_gswip: fix GSWIP_MDIO_PHY_FCONTX_EN value 2026-09-09 17:59:33 -07:00
microchip net: dsa: microchip: add two-steps PTP support for KSZ8463 2026-07-31 16:29:56 -07:00
mv88e6xxx Nothing too exciting, usual stream of fixes. 2026-09-10 14:07:48 -07:00
mxl862xx net: dsa: mxl862xx: disable the stats poll on teardown 2026-09-14 19:05:46 -07:00
netc net: dsa: netc: implement dynamic FDB entry ageing 2026-06-15 14:32:06 -07:00
ocelot Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (c files) 2026-07-03 07:38:17 +02:00
qca net: dsa: qca8k: fall back to ethernet-ports node name for LEDs 2026-07-02 11:48:25 +02:00
realtek Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2026-08-18 10:42:41 -07:00
sja1105 net: dsa: sja1105: round up PTP perout pin duration 2026-06-23 14:42:38 -07:00
xrs700x net: dsa: Use named initializers for struct i2c_device_id 2026-05-20 19:01:25 -07:00
bcm_sf2_cfp.c net: dsa: bcm_sf2: bound the CFP rule dump by the caller's buffer size 2026-09-04 15:19:57 -07:00
bcm_sf2_regs.h
bcm_sf2.c net: dsa: bcm_sf2: fix missing clk_disable_unprepare() in error paths 2026-03-19 09:26:40 -07:00
bcm_sf2.h net: dsa: use ethtool string helpers 2024-11-03 10:36:34 -08:00
dsa_loop.c net: dsa: dsa_loop: avoid devlink resource IDs collision with PARENT_TOP 2026-06-15 12:41:40 -07:00
Kconfig net: dsa: initial support for MT7628 embedded switch 2026-08-18 15:50:13 +02:00
ks8995.c net: dsa: ks8995: Fix incorrect OF match table name 2025-11-18 18:22:04 -08:00
lan9303_i2c.c net: dsa: Use named initializers for struct i2c_device_id 2026-05-20 19:01:25 -07:00
lan9303_mdio.c dsa: lan9303: consistent naming for PHY address parameter 2024-07-15 08:49:59 -07:00
lan9303-core.c net: dsa: lan9303: ensure chip reset and wait for READY status 2024-10-07 16:38:02 -07:00
lan9303.h
Makefile net: dsa: initial support for MT7628 embedded switch 2026-08-18 15:50:13 +02:00
mt7530-mdio.c net: dsa: mt7530: check bus->read() errors in the MDIO regmap backend 2026-07-29 17:30:14 -07:00
mt7530-mmio.c net: dsa: mt7530: add EN7528 support 2026-07-22 14:04:59 -07:00
mt7530.c net: dsa: mt7530: populate lpi_interfaces to fix EEE support 2026-09-10 13:31:28 +02:00
mt7530.h net: dsa: mt7530: add EN7528 support 2026-07-22 14:04:59 -07:00
mt7628.c net: dsa: initial support for MT7628 embedded switch 2026-08-18 15:50:13 +02:00
mv88e6060.c net: dsa: mv88e6060: use simple HSR offload helpers 2025-12-01 16:45:08 -08:00
mv88e6060.h
rzn1_a5psw.c net: dsa: a5psw: use simple HSR offload helpers 2025-12-01 16:45:08 -08:00
rzn1_a5psw.h net: dsa: rzn1-a5psw: add vlan support 2023-08-11 11:58:36 +01:00
vitesse-vsc73xx-core.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
vitesse-vsc73xx-platform.c net: dsa: Switch back to struct platform_driver::remove() 2024-10-04 16:39:57 -07:00
vitesse-vsc73xx-spi.c
vitesse-vsc73xx.h net: dsa: vsc73xx: implement FDB operations 2024-09-03 10:22:58 +02:00
yt921x.c net: dsa: yt921x: Add ACL support 2026-06-10 08:26:05 -07:00
yt921x.h net: dsa: yt921x: Fix external port detection 2026-07-21 11:21:37 -07:00