kernel_samsung_a53x/drivers/net/can
Simon Arlott bd0d86f91e can: mcp251x: fix deadlock if an interrupt occurs during mcp251x_open
commit 7dd9c26bd6cf679bcfdef01a8659791aa6487a29 upstream.

The mcp251x_hw_wake() function is called with the mpc_lock mutex held and
disables the interrupt handler so that no interrupts can be processed while
waking the device. If an interrupt has already occurred then waiting for
the interrupt handler to complete will deadlock because it will be trying
to acquire the same mutex.

CPU0                           CPU1
----                           ----
mcp251x_open()
 mutex_lock(&priv->mcp_lock)
  request_threaded_irq()
                               <interrupt>
                               mcp251x_can_ist()
                                mutex_lock(&priv->mcp_lock)
  mcp251x_hw_wake()
   disable_irq() <-- deadlock

Use disable_irq_nosync() instead because the interrupt handler does
everything while holding the mutex so it doesn't matter if it's still
running.

Fixes: 8ce8c0abcba3 ("can: mcp251x: only reset hardware as required")
Signed-off-by: Simon Arlott <simon@octiron.net>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/all/4fc08687-1d80-43fe-9f0d-8ef8475e75f6@0882a8b5-c6c3-11e9-b005-00805fc181fe.uuid.home.arpa
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-11-23 23:21:00 +01:00
..
c_can Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cc770 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dev can: dev: can_restart(): fix race condition between controller restart and netif_carrier_on() 2024-11-18 11:42:49 +01:00
ifi_canfd Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
m_can Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mscan Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
peak_canfd Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
rcar Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sja1000 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
softing Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
spi can: mcp251x: fix deadlock if an interrupt occurs during mcp251x_open 2024-11-23 23:21:00 +01:00
usb can: kvaser_usb: fix return value for hif_usb_send_regout 2024-11-19 14:19:48 +01:00
at91_can.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
flexcan.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
grcan.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
janz-ican3.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kvaser_pciefd.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
led.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pch_can.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
slcan.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sun4i_can.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ti_hecc.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vcan.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vxcan.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
xilinx_can.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00