diff mbox series

tty: serial: imx: Add return value check for platform_get_irq()

Message ID 1589180996-618-1-git-send-email-Anson.Huang@nxp.com (mailing list archive)
State Mainlined
Commit aa49d8e8b2dfc112f7de9c58698ae06b2101c73c
Headers show
Series tty: serial: imx: Add return value check for platform_get_irq() | expand

Commit Message

Anson Huang May 11, 2020, 7:09 a.m. UTC
RX irq is required, so add return value check for platform_get_irq().

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
---
 drivers/tty/serial/imx.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Uwe Kleine-König May 11, 2020, 7:27 a.m. UTC | #1
Hello Anson,

On Mon, May 11, 2020 at 03:09:56PM +0800, Anson Huang wrote:
> RX irq is required, so add return value check for platform_get_irq().
> 
> Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
> ---
>  drivers/tty/serial/imx.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
> index f4d6810..f4023d9 100644
> --- a/drivers/tty/serial/imx.c
> +++ b/drivers/tty/serial/imx.c
> @@ -2252,6 +2252,8 @@ static int imx_uart_probe(struct platform_device *pdev)
>  		return PTR_ERR(base);
>  
>  	rxirq = platform_get_irq(pdev, 0);
> +	if (rxirq < 0)
> +		return rxirq;
>  	txirq = platform_get_irq_optional(pdev, 1);
>  	rtsirq = platform_get_irq_optional(pdev, 2);

I'm not sure we need such a check as devm_request_irq fails if the
return value of platform_get_irq() is bogus.

But if we decide this construct is good enough, the error reporting
needs some love as currently it emits two error messages which is
confusing.

Best regards
Uwe
Anson Huang May 11, 2020, 7:34 a.m. UTC | #2
Hi, Uwe


> Subject: Re: [PATCH] tty: serial: imx: Add return value check for
> platform_get_irq()
> 
> Hello Anson,
> 
> On Mon, May 11, 2020 at 03:09:56PM +0800, Anson Huang wrote:
> > RX irq is required, so add return value check for platform_get_irq().
> >
> > Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
> > ---
> >  drivers/tty/serial/imx.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c index
> > f4d6810..f4023d9 100644
> > --- a/drivers/tty/serial/imx.c
> > +++ b/drivers/tty/serial/imx.c
> > @@ -2252,6 +2252,8 @@ static int imx_uart_probe(struct platform_device
> *pdev)
> >  		return PTR_ERR(base);
> >
> >  	rxirq = platform_get_irq(pdev, 0);
> > +	if (rxirq < 0)
> > +		return rxirq;
> >  	txirq = platform_get_irq_optional(pdev, 1);
> >  	rtsirq = platform_get_irq_optional(pdev, 2);
> 
> I'm not sure we need such a check as devm_request_irq fails if the return value
> of platform_get_irq() is bogus.
> 
> But if we decide this construct is good enough, the error reporting needs some
> love as currently it emits two error messages which is confusing.

From the driver, the RX IRQ is always required, if it failed in platform_get_irq(), then the
rest of the code is NOT necessary to be executed, and also I am NOT sure if platform_get_irq()
failed, the devm_request_irq will always failed?

Not very understand about your last question, the platform_get_irq() already has error message printed
out, so no additional error message is needed in the check. If looking through all other drivers, most
of the platform_get_irq() are having the return value check, if it failed in platform_get_irq(), driver can
just return error from .probe().

Anson
diff mbox series

Patch

diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
index f4d6810..f4023d9 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -2252,6 +2252,8 @@  static int imx_uart_probe(struct platform_device *pdev)
 		return PTR_ERR(base);
 
 	rxirq = platform_get_irq(pdev, 0);
+	if (rxirq < 0)
+		return rxirq;
 	txirq = platform_get_irq_optional(pdev, 1);
 	rtsirq = platform_get_irq_optional(pdev, 2);