[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen staging] xen/drivers/char: fix exynos4210 IRQ registration failure propagation



commit 046adc0e9421cdee352dc08016bb3bacedbafb40
Author:     Oleksii Moisieiev <Oleksii_Moisieiev@xxxxxxxx>
AuthorDate: Thu Apr 23 16:11:42 2026 +0000
Commit:     Michal Orzel <michal.orzel@xxxxxxx>
CommitDate: Mon Apr 27 08:52:38 2026 +0200

    xen/drivers/char: fix exynos4210 IRQ registration failure propagation
    
    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@xxxxxxxx>
    Reviewed-by: Michal Orzel <michal.orzel@xxxxxxx>
---
 xen/drivers/char/exynos4210-uart.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/xen/drivers/char/exynos4210-uart.c 
b/xen/drivers/char/exynos4210-uart.c
index 58901df554..7addc11c2c 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",
+    {
+        dprintk(XENLOG_ERR, "Failed to allocated exynos4210_uart IRQ %u\n",
                 uart->irq);
+        /* Do not unmask interrupts if irq handler wasn't set */
+        return;
+    }
 
     /* Unmask interrupts */
     exynos4210_write(uart, UINTM, ~UINTM_ALLI);
--
generated by git-patchbot for /home/xen/git/xen.git#staging



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.