Message ID | 4448c8cc-331f-2915-0e17-38ea34e251c8@omprussia.ru |
---|---|
State | New |
Headers | show |
Series | [v2] ata: libahci_platform: fix IRQ check | expand |
On 3/15/21 2:15 PM, Sergey Shtylyov wrote: > Iff platform_get_irq() returns 0, ahci_platform_init_host() would return 0 > early (as if the call was successful). Override IRQ0 with -EINVAL instead > as the 'libata' regards 0 as "no IRQ" (thus polling) anyway... Applied, thanks.
Index: linux-block/drivers/ata/libahci_platform.c =================================================================== --- linux-block.orig/drivers/ata/libahci_platform.c +++ linux-block/drivers/ata/libahci_platform.c @@ -582,11 +582,13 @@ int ahci_platform_init_host(struct platf int i, irq, n_ports, rc; irq = platform_get_irq(pdev, 0); - if (irq <= 0) { + if (irq < 0) { if (irq != -EPROBE_DEFER) dev_err(dev, "no irq\n"); return irq; } + if (!irq) + return -EINVAL; hpriv->irq = irq;
Iff platform_get_irq() returns 0, ahci_platform_init_host() would return 0 early (as if the call was successful). Override IRQ0 with -EINVAL instead as the 'libata' regards 0 as "no IRQ" (thus polling) anyway... Fixes: c034640a32f8 ("ata: libahci: properly propagate return value of platform_get_irq()") Signed-off-by: Sergey Shtylyov <s.shtylyov@omprussia.ru> --- Changes in version 2: - added the "Fixes:" tag. This patch is against the 'master' branch of Jens Axboe's 'linux-block.git' repo. drivers/ata/libahci_platform.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)