Re: [PATCH] serial: cpm_uart: use irq variable for platform_get_irq()

From: Greg Kroah-Hartman

Date: Thu Oct 01 2026 - 04:58:02 EST


On Fri, Sep 25, 2026 at 11:15:30AM -0700, Rosen Penev wrote:
> struct uart_port has its irq member as an unsigned int, which does not
> work when platform_get_irq() returns an error.
>
> Use a local irq variable to handle this and write to struct uart_port's
> irq member when platform_get_irq() succeeds. On success, it returns an
> IRQ >= 0, which is representable by unsigned int.
>
> Fixes: 831603b3e8aa ("serial: cpm_uart: replace irq_of_parse_and_map with platform_get_irq")
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
> Closes: https://lore.kernel.org/oe-kbuild-all/202609251916.1XlVHLwd-lkp@xxxxxxxxx/
> Signed-off-by: Rosen Penev <rosenp@xxxxxxxxx>
> ---
> drivers/tty/serial/cpm_uart.c | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/tty/serial/cpm_uart.c b/drivers/tty/serial/cpm_uart.c
> index 39f54bb7b485..ca0acccd3dd8 100644
> --- a/drivers/tty/serial/cpm_uart.c
> +++ b/drivers/tty/serial/cpm_uart.c
> @@ -1517,6 +1517,7 @@ static int cpm_uart_probe(struct platform_device *ofdev)
> {
> int index = probe_index++;
> struct uart_cpm_port *pinfo = &cpm_uart_ports[index];
> + int irq;
> int ret;
>
> pinfo->port.line = index;
> @@ -1524,14 +1525,15 @@ static int cpm_uart_probe(struct platform_device *ofdev)
> if (index >= UART_NR)
> return -ENODEV;
>
> + irq = platform_get_irq(ofdev, 0);
> + if (irq < 0)
> + return irq;
> +
> platform_set_drvdata(ofdev, pinfo);
>
> /* initialize the device pointer for the port */
> pinfo->port.dev = &ofdev->dev;
> -
> - pinfo->port.irq = platform_get_irq(ofdev, 0);
> - if (pinfo->port.irq < 0)
> - return pinfo->port.irq;
> + pinfo->port.irq = irq;

Why did you move where platform_get_irq() is called?

thanks,

greg k-h