On Mon, Feb 10, 2025 at 07:48:29AM -0600, Matt Lee wrote: > 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@xxxxxxxxxx> > --- > 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); > - So now the lock does nothing? Are you sure this change is correct? thanks, greg k-h