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

From: Rosen Penev

Date: Fri Sep 25 2026 - 14:16:25 EST


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;

ret = cpm_uart_init_port(ofdev->dev.of_node, pinfo);
if (!ret)
--
2.55.0