Commit 27a0e54b authored by Timo Schlüßler's avatar Timo Schlüßler Committed by Marc Kleine-Budde
Browse files

can: mcp251x: mcp251x_restart_work_handler(): Fix potential force_quit race condition



In mcp251x_restart_work_handler() the variable to stop the interrupt
handler (priv->force_quit) is reset after the chip is restarted and thus
a interrupt might occur.

This patch fixes the potential race condition by resetting force_quit
before enabling interrupts.

Signed-off-by: default avatarTimo Schlüßler <schluessler@krause.de>
Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent 688d11c3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -717,6 +717,7 @@ static void mcp251x_restart_work_handler(struct work_struct *ws)
	if (priv->after_suspend) {
		mcp251x_hw_reset(spi);
		mcp251x_setup(net, spi);
		priv->force_quit = 0;
		if (priv->after_suspend & AFTER_SUSPEND_RESTART) {
			mcp251x_set_normal_mode(spi);
		} else if (priv->after_suspend & AFTER_SUSPEND_UP) {
@@ -728,7 +729,6 @@ static void mcp251x_restart_work_handler(struct work_struct *ws)
			mcp251x_hw_sleep(spi);
		}
		priv->after_suspend = 0;
		priv->force_quit = 0;
	}

	if (priv->restart_tx) {