| From 3135ea92355ca2b3f6f4e1bed7282fd25b5546bc Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sat, 3 Apr 2021 23:43:55 +0300 |
| Subject: scsi: hisi_sas: Fix IRQ checks |
| |
| From: Sergey Shtylyov <s.shtylyov@omprussia.ru> |
| |
| [ Upstream commit 6c11dc060427e07ca144eacaccd696106b361b06 ] |
| |
| Commit df2d8213d9e3 ("hisi_sas: use platform_get_irq()") failed to take |
| into account that irq_of_parse_and_map() and platform_get_irq() have a |
| different way of indicating an error: the former returns 0 and the latter |
| returns a negative error code. Fix up the IRQ checks! |
| |
| Link: https://lore.kernel.org/r/810f26d3-908b-1d6b-dc5c-40019726baca@omprussia.ru |
| Fixes: df2d8213d9e3 ("hisi_sas: use platform_get_irq()") |
| Acked-by: John Garry <john.garry@huawei.com> |
| Signed-off-by: Sergey Shtylyov <s.shtylyov@omprussia.ru> |
| Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/scsi/hisi_sas/hisi_sas_v1_hw.c | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| diff --git a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c |
| index 22eecc89d41b..6c2a97f80b12 100644 |
| --- a/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c |
| +++ b/drivers/scsi/hisi_sas/hisi_sas_v1_hw.c |
| @@ -1644,7 +1644,7 @@ static int interrupt_init_v1_hw(struct hisi_hba *hisi_hba) |
| idx = i * HISI_SAS_PHY_INT_NR; |
| for (j = 0; j < HISI_SAS_PHY_INT_NR; j++, idx++) { |
| irq = platform_get_irq(pdev, idx); |
| - if (!irq) { |
| + if (irq < 0) { |
| dev_err(dev, "irq init: fail map phy interrupt %d\n", |
| idx); |
| return -ENOENT; |
| @@ -1663,7 +1663,7 @@ static int interrupt_init_v1_hw(struct hisi_hba *hisi_hba) |
| idx = hisi_hba->n_phy * HISI_SAS_PHY_INT_NR; |
| for (i = 0; i < hisi_hba->queue_count; i++, idx++) { |
| irq = platform_get_irq(pdev, idx); |
| - if (!irq) { |
| + if (irq < 0) { |
| dev_err(dev, "irq init: could not map cq interrupt %d\n", |
| idx); |
| return -ENOENT; |
| @@ -1681,7 +1681,7 @@ static int interrupt_init_v1_hw(struct hisi_hba *hisi_hba) |
| idx = (hisi_hba->n_phy * HISI_SAS_PHY_INT_NR) + hisi_hba->queue_count; |
| for (i = 0; i < HISI_SAS_FATAL_INT_NR; i++, idx++) { |
| irq = platform_get_irq(pdev, idx); |
| - if (!irq) { |
| + if (irq < 0) { |
| dev_err(dev, "irq init: could not map fatal interrupt %d\n", |
| idx); |
| return -ENOENT; |
| -- |
| 2.30.2 |
| |