Message ID | b0a86089-8b8b-122e-fd6d-73e8c2304964@omp.ru (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Stop calling request_irq(), etc. with invalid IRQs in the USB drivers | expand |
Sergey Shtylyov <s.shtylyov@omp.ru> writes: > The driver neglects to check the result of platform_get_irq()'s call and > blithely passes the negative error codes to request_irq() (which takes > *unsigned* IRQ #), causing it to fail with -EINVAL, overriding an original > error code. Stop calling request_irq() with the invalid IRQ #s. > > Fixes: 0807c500a1a6 ("USB: add Freescale USB OTG Transceiver driver") > Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru> Acked-by: Felipe Balbi <balbi@kernel.org>
Index: usb/drivers/usb/phy/phy-fsl-usb.c =================================================================== --- usb.orig/drivers/usb/phy/phy-fsl-usb.c +++ usb/drivers/usb/phy/phy-fsl-usb.c @@ -873,6 +873,8 @@ int usb_otg_start(struct platform_device /* request irq */ p_otg->irq = platform_get_irq(pdev, 0); + if (p_otg->irq < 0) + return p_otg->irq; status = request_irq(p_otg->irq, fsl_otg_isr, IRQF_SHARED, driver_name, p_otg); if (status) {
The driver neglects to check the result of platform_get_irq()'s call and blithely passes the negative error codes to request_irq() (which takes *unsigned* IRQ #), causing it to fail with -EINVAL, overriding an original error code. Stop calling request_irq() with the invalid IRQ #s. Fixes: 0807c500a1a6 ("USB: add Freescale USB OTG Transceiver driver") Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru> --- drivers/usb/phy/phy-fsl-usb.c | 2 ++ 1 file changed, 2 insertions(+)