linux/drivers/net/ethernet/stmicro/stmmac
Bernd Edlinger 8d5f4b0717 stmmac: Don't access tx_q->dirty_tx before netif_tx_lock
This is the possible reason for different hard to reproduce
problems on my ARMv7-SMP test system.

The symptoms are in recent kernels imprecise external aborts,
and in older kernels various kinds of network stalls and
unexpected page allocation failures.

My testing indicates that the trouble started between v4.5 and v4.6
and prevails up to v4.14.

Using the dirty_tx before acquiring the spin lock is clearly
wrong and was first introduced with v4.6.

Fixes: e3ad57c967 ("stmmac: review RX/TX ring management")

Signed-off-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-10-22 03:24:43 +01:00
..
altr_tse_pcs.c net: ethernet: stmmac: Fix altr_tse_pcs SGMII Initialization 2017-06-02 14:20:11 -04:00
altr_tse_pcs.h net: ethernet: Add TSE PCS support to dwmac-socfpga 2016-07-10 22:07:50 -07:00
chain_mode.c net: stmmac: set total length of the packet to be transmitted in TDES3 2017-04-13 12:40:09 -04:00
common.h net-next: stmmac: rework the speed selection 2017-05-25 13:08:35 -04:00
descs_com.h net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
descs.h net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
dwmac4_core.c net: stmmac: dwmac4: Re-enable MAC Rx before powering down 2017-09-28 10:19:02 -07:00
dwmac4_descs.c net: stmmac: Prevent infinite loop in get_rx_timestamp_status() 2017-10-22 02:50:40 +01:00
dwmac4_descs.h stmmac: fix PTP support for GMAC4 2016-11-15 19:56:17 -05:00
dwmac4_dma.c net: stmmac: make some functions static 2017-06-23 13:58:39 -04:00
dwmac4_dma.h net: stmmac: rx and tx ring length prepared for multiple queues 2017-03-15 14:44:32 -07:00
dwmac4_lib.c net: stmmac: prepare rx/tx set tail function for multiple queues 2017-03-15 14:44:32 -07:00
dwmac4.h net: stmmac: RX queue routing configuration 2017-03-21 17:24:01 -07:00
dwmac100_core.c net-next: stmmac: rework the speed selection 2017-05-25 13:08:35 -04:00
dwmac100_dma.c net: stmmac: Adjust dump offset of DMA registers for ethtool 2017-07-24 16:19:10 -07:00
dwmac100.h net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
dwmac1000_core.c net-next: stmmac: rework the speed selection 2017-05-25 13:08:35 -04:00
dwmac1000_dma.c net: stmmac: Adjust dump offset of DMA registers for ethtool 2017-07-24 16:19:10 -07:00
dwmac1000.h net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
dwmac_dma.h net: stmmac: Adjust dump offset of DMA registers for ethtool 2017-07-24 16:19:10 -07:00
dwmac_lib.c net: stmmac: dwmac_lib: fix interchanged sleep/timeout values in DMA reset function 2017-10-13 10:19:52 -07:00
dwmac-anarion.c net: stmmac: Add Adaptrum Anarion GMAC glue layer 2017-08-06 21:31:32 -07:00
dwmac-dwc-qos-eth.c net: stmmac: dwc-qos: Add suspend / resume support 2017-09-28 10:19:02 -07:00
dwmac-generic.c net: stmmac: dwmac-generic: add missing compatible strings 2016-12-08 11:35:37 -05:00
dwmac-ipq806x.c net: ethernet: stmmac: fix of-node and fixed-link-phydev leaks 2016-12-02 10:42:47 -05:00
dwmac-lpc18xx.c net: ethernet: stmmac: fix of-node and fixed-link-phydev leaks 2016-12-02 10:42:47 -05:00
dwmac-meson8b.c net: stmmac: constify clk_div_table 2017-08-29 10:56:42 -07:00
dwmac-meson.c net: ethernet: stmmac: fix of-node and fixed-link-phydev leaks 2016-12-02 10:42:47 -05:00
dwmac-oxnas.c net: stmmac: dwmac-oxnas: use generic pm implementation 2017-01-03 09:33:00 -05:00
dwmac-rk.c net: stmmac: dwmac-rk: Add RK3128 GMAC support 2017-10-03 15:39:56 -07:00
dwmac-socfpga.c net: stmmac: socfgpa: Ensure emac bit set in sys manager for MII/GMII/SGMII. 2017-08-23 20:26:58 -07:00
dwmac-sti.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-12-03 12:29:53 -05:00
dwmac-stm32.c net: ethernet: stmmac: fix of-node and fixed-link-phydev leaks 2016-12-02 10:42:47 -05:00
dwmac-sun8i.c net: stmmac: sun8i: Remove the compatibles 2017-08-28 15:22:42 -07:00
dwmac-sunxi.c net: ethernet: stmmac: fix of-node and fixed-link-phydev leaks 2016-12-02 10:42:47 -05:00
enh_desc.c net: stmmac: set total length of the packet to be transmitted in TDES3 2017-04-13 12:40:09 -04:00
Kconfig net: stmmac: Add Adaptrum Anarion GMAC glue layer 2017-08-06 21:31:32 -07:00
Makefile net: stmmac: Add Adaptrum Anarion GMAC glue layer 2017-08-06 21:31:32 -07:00
mmc_core.c net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
mmc.h net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
norm_desc.c net: stmmac: set total length of the packet to be transmitted in TDES3 2017-04-13 12:40:09 -04:00
ring_mode.c net: stmmac: set total length of the packet to be transmitted in TDES3 2017-04-13 12:40:09 -04:00
stmmac_ethtool.c net: stmmac: Adjust dump offset of DMA registers for ethtool 2017-07-24 16:19:10 -07:00
stmmac_hwtstamp.c net: stmmac: remove freesoftware address 2017-02-08 15:11:23 -05:00
stmmac_main.c stmmac: Don't access tx_q->dirty_tx before netif_tx_lock 2017-10-22 03:24:43 +01:00
stmmac_mdio.c net: stmmac: Delete dead code for MDIO registration 2017-09-05 14:36:18 -07:00
stmmac_pci.c stmmac: pci: Use dmi_system_id table for retrieving PHY addresses 2017-06-22 13:39:57 -04:00
stmmac_pcs.h
stmmac_platform.c net: stmmac: Cocci spatch "of_table" 2017-09-21 15:26:26 -07:00
stmmac_platform.h net: ethernet: stmmac: fix of-node and fixed-link-phydev leaks 2016-12-02 10:42:47 -05:00
stmmac_ptp.c net: ethernet: make ptp_clock_info const 2017-08-22 11:04:51 -07:00
stmmac_ptp.h stmmac: fix ptp header for GMAC3 hw timestamp 2017-06-09 12:39:25 -04:00
stmmac.h net-next: stmmac: Convert old_link to bool 2017-05-25 13:08:35 -04:00