lkml.org 
[lkml]   [2021]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 331/530] scsi: hisi_sas: Fix IRQ checks
    Date
    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


    \
     
     \ /
      Last update: 2021-05-12 19:01    [W:6.343 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site