usb: cdnsp: Fix incorrect calling of cdnsp_died function
commit 16f00d969afe60e233c1a91af7ac840df60d3536 upstream. Patch restrict calling of cdnsp_died function during removing modules or software disconnect. This function was called because after transition controller to HALT state the driver starts handling the deferred interrupt. In this case such interrupt can be simple ignored. Fixes: 3d82904559f4 ("usb: cdnsp: cdns3 Add main part of Cadence USBSSP DRD Driver") cc: <stable@vger.kernel.org> Reviewed-by: Peter Chen <peter.chen@kernel.org> Signed-off-by: Pawel Laszczak <pawell@cadence.com> Link: https://lore.kernel.org/r/20211210112945.660-1-pawell@gli-login.cadence.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
ed89521e2d
commit
ec83d6e57a
@ -1525,7 +1525,14 @@ irqreturn_t cdnsp_thread_irq_handler(int irq, void *data)
|
||||
spin_lock_irqsave(&pdev->lock, flags);
|
||||
|
||||
if (pdev->cdnsp_state & (CDNSP_STATE_HALTED | CDNSP_STATE_DYING)) {
|
||||
cdnsp_died(pdev);
|
||||
/*
|
||||
* While removing or stopping driver there may still be deferred
|
||||
* not handled interrupt which should not be treated as error.
|
||||
* Driver should simply ignore it.
|
||||
*/
|
||||
if (pdev->gadget_driver)
|
||||
cdnsp_died(pdev);
|
||||
|
||||
spin_unlock_irqrestore(&pdev->lock, flags);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user