lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 234/563] can: xilinx_can: xcan_probe(): check for error irq
    Date
    From: Jiasheng Jiang <jiasheng@iscas.ac.cn>

    [ Upstream commit c6564c13dae25cd7f8e1de5127b4da4500ee5844 ]

    For the possible failure of the platform_get_irq(), the returned irq
    could be error number and will finally cause the failure of the
    request_irq().

    Consider that platform_get_irq() can now in certain cases return
    -EPROBE_DEFER, and the consequences of letting request_irq()
    effectively convert that into -EINVAL, even at probe time rather than
    later on. So it might be better to check just now.

    Fixes: b1201e44f50b ("can: xilinx CAN controller support")
    Link: https://lore.kernel.org/all/20211224021324.1447494-1-jiasheng@iscas.ac.cn
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/can/xilinx_can.c | 7 ++++++-
    1 file changed, 6 insertions(+), 1 deletion(-)

    diff --git a/drivers/net/can/xilinx_can.c b/drivers/net/can/xilinx_can.c
    index 48d746e18f302..375998263af7a 100644
    --- a/drivers/net/can/xilinx_can.c
    +++ b/drivers/net/can/xilinx_can.c
    @@ -1762,7 +1762,12 @@ static int xcan_probe(struct platform_device *pdev)
    spin_lock_init(&priv->tx_lock);

    /* Get IRQ for the device */
    - ndev->irq = platform_get_irq(pdev, 0);
    + ret = platform_get_irq(pdev, 0);
    + if (ret < 0)
    + goto err_free;
    +
    + ndev->irq = ret;
    +
    ndev->flags |= IFF_ECHO; /* We support local echo */

    platform_set_drvdata(pdev, ndev);
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-24 21:14    [W:4.020 / U:0.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site