[PATCH v2 4/4] xen/drivers/char: fix exynos4210 IRQ registration failure propagation

Oleksii Moisieiev posted 4 patches 3 days, 8 hours ago
[PATCH v2 4/4] xen/drivers/char: fix exynos4210 IRQ registration failure propagation
Posted by Oleksii Moisieiev 3 days, 8 hours ago
In exynos4210_uart_init_postirq(), when setup_irq() returns an error
the failure was only logged via dprintk() and execution continued,
unconditionally clearing UINTM and setting UMCON_INT_EN. This enabled
receive and transmit interrupt lines with no handler registered. On
platforms where the GIC receives these asserted lines, the result is
either repeated spurious-interrupt warnings or an unhandled interrupt
fault.

Add an early return in the setup_irq() error branch so that the
interrupt-enable writes to UINTM and UMCON are skipped when IRQ
registration fails.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
---



 xen/drivers/char/exynos4210-uart.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/xen/drivers/char/exynos4210-uart.c b/xen/drivers/char/exynos4210-uart.c
index 58901df554..2e5860ea2b 100644
--- a/xen/drivers/char/exynos4210-uart.c
+++ b/xen/drivers/char/exynos4210-uart.c
@@ -199,8 +199,12 @@ static void __init exynos4210_uart_init_postirq(struct serial_port *port)
     uart->irqaction.dev_id  = port;
 
     if ( (rc = setup_irq(uart->irq, 0, &uart->irqaction)) != 0 )
+    {
         dprintk(XENLOG_ERR, "Failed to allocated exynos4210_uart IRQ %d\n",
                 uart->irq);
+        /* Don't enable interrupts if irq setup was failed */
+        return;
+    }
 
     /* Unmask interrupts */
     exynos4210_write(uart, UINTM, ~UINTM_ALLI);
-- 
2.43.0
Re: [PATCH v2 4/4] xen/drivers/char: fix exynos4210 IRQ registration failure propagation
Posted by Orzel, Michal 3 days, 8 hours ago

On 09/04/2026 15:50, Oleksii Moisieiev wrote:
> In exynos4210_uart_init_postirq(), when setup_irq() returns an error
> the failure was only logged via dprintk() and execution continued,
> unconditionally clearing UINTM and setting UMCON_INT_EN. This enabled
> receive and transmit interrupt lines with no handler registered. On
> platforms where the GIC receives these asserted lines, the result is
> either repeated spurious-interrupt warnings or an unhandled interrupt
> fault.
> 
> Add an early return in the setup_irq() error branch so that the
> interrupt-enable writes to UINTM and UMCON are skipped when IRQ
> registration fails.
> 
> Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal