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.11 336/601] pata_ipx4xx_cf: fix IRQ check
    Date
    From: Sergey Shtylyov <s.shtylyov@omprussia.ru>

    [ Upstream commit e379b40cc0f179403ce0b82b7e539f635a568da5 ]

    The driver's probe() method is written as if platform_get_irq() returns 0
    on error, while actually it returns a negative error code (with all the
    other values considered valid IRQs). Rewrite the driver's IRQ checking
    code to pass the positive IRQ #s to ata_host_activate(), propagate errors
    upstream, and treat IRQ0 as error, returning -EINVAL, as the libata code
    treats 0 as an indication that polling should be used anyway...

    Fixes: 0df0d0a0ea9f ("[libata] ARM: add ixp4xx PATA driver")
    Signed-off-by: Sergey Shtylyov <s.shtylyov@omprussia.ru>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/ata/pata_ixp4xx_cf.c | 6 +++++-
    1 file changed, 5 insertions(+), 1 deletion(-)

    diff --git a/drivers/ata/pata_ixp4xx_cf.c b/drivers/ata/pata_ixp4xx_cf.c
    index d1644a8ef9fa..abc0e87ca1a8 100644
    --- a/drivers/ata/pata_ixp4xx_cf.c
    +++ b/drivers/ata/pata_ixp4xx_cf.c
    @@ -165,8 +165,12 @@ static int ixp4xx_pata_probe(struct platform_device *pdev)
    return -ENOMEM;

    irq = platform_get_irq(pdev, 0);
    - if (irq)
    + if (irq > 0)
    irq_set_irq_type(irq, IRQ_TYPE_EDGE_RISING);
    + else if (irq < 0)
    + return irq;
    + else
    + return -EINVAL;

    /* Setup expansion bus chip selects */
    *data->cs0_cfg = data->cs0_bits;
    --
    2.30.2


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