Skip to content

Commit d757218

Browse files
marckleinebuddegregkh
authored andcommitted
can: m_can: m_can_close(): stop clocks after device has been shut down
[ Upstream commit 2c09b50 ] After calling m_can_stop() an interrupt may be pending or NAPI might still be executed. This means the driver might still touch registers of the IP core after the clocks have been disabled. This is not good practice and might lead to aborts depending on the SoC integration. To avoid these potential problems, make m_can_close() symmetric to m_can_open(), i.e. stop the clocks at the end, right before shutting down the transceiver. Fixes: e0d1f48 ("can: m_can: add Bosch M_CAN controller support") Link: https://patch.msgid.link/20240910-can-m_can-fix-ifup-v3-2-6c1720ba45ce@pengutronix.de Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent 7fb4f56 commit d757218

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/net/can/m_can/m_can.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1600,7 +1600,6 @@ static int m_can_close(struct net_device *dev)
16001600
netif_stop_queue(dev);
16011601

16021602
m_can_stop(dev);
1603-
m_can_clk_stop(cdev);
16041603
free_irq(dev->irq, dev);
16051604

16061605
if (cdev->is_peripheral) {
@@ -1614,6 +1613,7 @@ static int m_can_close(struct net_device *dev)
16141613

16151614
close_candev(dev);
16161615

1616+
m_can_clk_stop(cdev);
16171617
phy_power_off(cdev->transceiver);
16181618

16191619
return 0;

0 commit comments

Comments
 (0)