linux-stable/drivers/net/can
Florian Faber 2d77bd61a2 can: mscan: mscan_rx_poll(): fix rx path lockup when returning from polling to irq mode
Under load, the RX side of the mscan driver can get stuck while TX still
works. Restarting the interface locks up the system. This behaviour
could be reproduced reliably on a MPC5121e based system.

The patch fixes the return value of the NAPI polling function (should be
the number of processed packets, not constant 1) and the condition under
which IRQs are enabled again after polling is finished.

With this patch, no more lockups were observed over a test period of ten
days.

Fixes: afa17a500a ("net/can: add driver for mscan family & mpc52xx_mscan")
Signed-off-by: Florian Faber <faber@faberman.de>
Cc: linux-stable <stable@vger.kernel.org>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2020-01-02 15:34:27 +01:00
..
c_can can: c_can: c_can_plaform: fix checkpatch warnings 2019-11-11 21:58:08 +01:00
cc770 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 495 2019-06-19 17:09:52 +02:00
ifi_canfd can: ifi: use devm_platform_ioremap_resource() to simplify code 2019-11-11 21:58:09 +01:00
m_can can: tcan4x5x: tcan4x5x_parse_config(): fix inconsistent IS_ERR and PTR_ERR 2020-01-02 15:34:26 +01:00
mscan can: mscan: mscan_rx_poll(): fix rx path lockup when returning from polling to irq mode 2020-01-02 15:34:27 +01:00
peak_canfd can: peak_canfd: provide hw timestamps in rx skbs 2019-11-11 21:58:09 +01:00
rcar can: rcar: use devm_platform_ioremap_resource() to simplify code 2019-11-11 21:58:10 +01:00
sja1000 can: peak_pci: Make structure peak_pciec_i2c_bit_ops constant 2019-08-20 13:41:25 +02:00
softing net/can: using dev_get_drvdata directly 2019-07-05 15:24:41 -07:00
spi can: mcp251x: only reset hardware as required 2019-11-11 21:57:28 +01:00
usb can: gs_usb: gs_usb_probe(): use descriptors of current altsetting 2020-01-02 15:34:27 +01:00
at91_can.c can: mark expected switch fall-throughs 2019-07-25 20:09:42 -05:00
dev.c can: dev: can_restart(): remove unused code 2019-11-11 21:57:28 +01:00
flexcan.c can: flexcan: poll MCR_LPM_ACK instead of GPR ACK for stop mode acknowledgment 2019-12-08 12:21:35 +01:00
grcan.c can: grcan: use devm_platform_ioremap_resource() to simplify code 2019-11-11 21:58:09 +01:00
janz-ican3.c net: Remove dev_err() usage after platform_get_irq() 2019-07-30 14:37:35 -07:00
Kconfig can: kvaser_pciefd: Add driver for Kvaser PCIEcan devices 2019-07-24 10:31:53 +02:00
kvaser_pciefd.c can: kvaser_pciefd: the PWM generator is running at the bus frequency of the system. 2019-09-03 10:23:57 +02:00
led.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
Makefile can: kvaser_pciefd: Add driver for Kvaser PCIEcan devices 2019-07-24 10:31:53 +02:00
pch_can.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 340 2019-06-05 17:37:07 +02:00
rx-offload.c can: rx-offload: Prepare for CAN FD support 2019-11-11 21:58:10 +01:00
slcan.c can: slcan: Fix use-after-free Read in slcan_open 2019-12-03 11:15:08 +01:00
sun4i_can.c can: sun4i: use devm_platform_ioremap_resource() to simplify code 2019-11-11 21:58:10 +01:00
ti_hecc.c can: rx-offload: Prepare for CAN FD support 2019-11-11 21:58:10 +01:00
vcan.c can: make use of preallocated can_ml_priv for per device struct can_dev_rcv_lists 2019-09-04 13:29:15 +02:00
vxcan.c can: make use of preallocated can_ml_priv for per device struct can_dev_rcv_lists 2019-09-04 13:29:15 +02:00
xilinx_can.c can: xilinx_can: Fix missing Rx can packets on CANFD2.0 2019-12-08 11:52:02 +01:00