]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
can: m_can: m_can_close(): don't call free_irq() for IRQ-less devices
authorMarc Kleine-Budde <mkl@pengutronix.de>
Mon, 30 Sep 2024 17:02:30 +0000 (19:02 +0200)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Mon, 4 Nov 2024 17:01:06 +0000 (18:01 +0100)
In commit b382380c0d2d ("can: m_can: Add hrtimer to generate software
interrupt") support for IRQ-less devices was added. Instead of an
interrupt, the interrupt routine is called by a hrtimer-based polling
loop.

That patch forgot to change free_irq() to be only called for devices
with IRQs. Fix this, by calling free_irq() conditionally only if an
IRQ is available for the device (and thus has been requested
previously).

Fixes: b382380c0d2d ("can: m_can: Add hrtimer to generate software interrupt")
Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>
Link: https://patch.msgid.link/20240930-m_can-cleanups-v1-1-001c579cdee4@pengutronix.de
Cc: <stable@vger.kernel.org> # v6.6+
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/m_can/m_can.c

index a978b960f1f1e1e8273216ff330ab789d0fd6d51..16e9e7d7527d9762d73a7ec47940c73c0976e05d 100644 (file)
@@ -1765,7 +1765,8 @@ static int m_can_close(struct net_device *dev)
        netif_stop_queue(dev);
 
        m_can_stop(dev);
-       free_irq(dev->irq, dev);
+       if (dev->irq)
+               free_irq(dev->irq, dev);
 
        m_can_clean(dev);