public inbox for linux-usb@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/2] USB: max3421: Fix scheduling while atomic in max3421_remove()
@ 2025-02-10 14:06 Matt Lee
  0 siblings, 0 replies; 4+ messages in thread
From: Matt Lee @ 2025-02-10 14:06 UTC (permalink / raw)
  To: gregkh; +Cc: linux-usb, matt

A bug in `max3421_remove()` caused a "scheduling while atomic" crash when
`kthread_stop()` was called while holding a spinlock.

This patch ensures that `kthread_stop()` is called outside the spinlock,
fixing the crash and improving system stability when unloading the driver.

Signed-off-by: Matt Lee <matt@oscium.com>
---
 drivers/usb/host/max3421-hcd.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/usb/host/max3421-hcd.c b/drivers/usb/host/max3421-hcd.c
index abcdef0..1234567 100644
--- a/drivers/usb/host/max3421-hcd.c
+++ b/drivers/usb/host/max3421-hcd.c
@@ -1936,11 +1945,10 @@ max3421_remove(struct spi_device *spi)
        usb_remove_hcd(hcd);

        spin_lock_irqsave(&max3421_hcd->lock, flags);
+       spin_unlock_irqrestore(&max3421_hcd->lock, flags);

        kthread_stop(max3421_hcd->spi_thread);

-       spin_unlock_irqrestore(&max3421_hcd->lock, flags);
-
        free_irq(spi->irq, hcd);

        usb_put_hcd(hcd);
-- 
2.34.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-02-10 15:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <CABrMTje0ijdtcO31HmuSufxXFQO2Ay2Rh0_0Qc4FFC3zgqe-pA@mail.gmail.com>
2025-02-10 14:07 ` [PATCH 2/2] USB: max3421: Fix scheduling while atomic in max3421_remove() Greg KH
2025-02-10 15:42   ` Matt Lee
2025-02-10 15:51     ` Greg KH
2025-02-10 14:06 Matt Lee

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox