Re: [PATCH 2/2] USB: max3421: Fix scheduling while atomic in max3421_remove()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux