From 8b585431a16cfb9d8f2955a9fa0787ce3dceb3c2 Mon Sep 17 00:00:00 2001 From: Pei Xiao Date: Mon, 17 Aug 2026 11:29:25 +0800 Subject: [PATCH] parisc: eisa: Fix infinite loop when parsing invalid IRQ value When an invalid value is passed via the "eisa_irq_edge=" kernel command line parameter (e.g. "eisa_irq_edge=16,5"), eisa_irq_setup() prints an error message and continues without advancing the current position. As a result the same invalid value is parsed again and again, causing an infinite loop while the kernel boots. Advance to the next comma-separated entry, or stop parsing when there is no next entry, before continuing so that the remaining entries are processed normally. Signed-off-by: Pei Xiao Cc: stable@vger.kernel.org Signed-off-by: Helge Deller --- drivers/parisc/eisa.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/parisc/eisa.c b/drivers/parisc/eisa.c index 9eab974e6baf..b5b5413bfd1e 100644 --- a/drivers/parisc/eisa.c +++ b/drivers/parisc/eisa.c @@ -442,6 +442,11 @@ static int __init eisa_irq_setup(char *str) val = (int) simple_strtoul(cur, &pe, 0); if (val > 15 || val < 0) { printk(KERN_ERR "eisa: EISA irq value are 0-15\n"); + cur = strchr(cur, ','); + if (cur) + cur++; + else + break; continue; } if (val == 2) {