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.16 0362/1039] serial: 8250_bcm7271: Propagate error codes from brcmuart_probe()
    Date
    From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>

    [ Upstream commit c195438f1e84de8fa46b4f5264d12379bee6e9a1 ]

    In case of failures brcmuart_probe() always returned -ENODEV, this
    isn't correct for example platform_get_irq_byname() may return
    -EPROBE_DEFER to handle such cases propagate error codes in
    brcmuart_probe() in case of failures.

    Fixes: 41a469482de25 ("serial: 8250: Add new 8250-core based Broadcom STB driver")
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
    Link: https://lore.kernel.org/r/20211224142917.6966-4-prabhakar.mahadev-lad.rj@bp.renesas.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/tty/serial/8250/8250_bcm7271.c | 11 ++++++++---
    1 file changed, 8 insertions(+), 3 deletions(-)

    diff --git a/drivers/tty/serial/8250/8250_bcm7271.c b/drivers/tty/serial/8250/8250_bcm7271.c
    index 5163d60756b73..0877cf24f7de0 100644
    --- a/drivers/tty/serial/8250/8250_bcm7271.c
    +++ b/drivers/tty/serial/8250/8250_bcm7271.c
    @@ -1076,14 +1076,18 @@ static int brcmuart_probe(struct platform_device *pdev)
    priv->rx_bufs = dma_alloc_coherent(dev,
    priv->rx_size,
    &priv->rx_addr, GFP_KERNEL);
    - if (!priv->rx_bufs)
    + if (!priv->rx_bufs) {
    + ret = -EINVAL;
    goto err;
    + }
    priv->tx_size = UART_XMIT_SIZE;
    priv->tx_buf = dma_alloc_coherent(dev,
    priv->tx_size,
    &priv->tx_addr, GFP_KERNEL);
    - if (!priv->tx_buf)
    + if (!priv->tx_buf) {
    + ret = -EINVAL;
    goto err;
    + }
    }

    ret = serial8250_register_8250_port(&up);
    @@ -1097,6 +1101,7 @@ static int brcmuart_probe(struct platform_device *pdev)
    if (priv->dma_enabled) {
    dma_irq = platform_get_irq_byname(pdev, "dma");
    if (dma_irq < 0) {
    + ret = dma_irq;
    dev_err(dev, "no IRQ resource info\n");
    goto err1;
    }
    @@ -1116,7 +1121,7 @@ err1:
    err:
    brcmuart_free_bufs(dev, priv);
    brcmuart_arbitration(priv, 0);
    - return -ENODEV;
    + return ret;
    }

    static int brcmuart_remove(struct platform_device *pdev)
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-25 01:12    [W:4.037 / U:0.392 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site