diff --git a/arch/sparc/kernel/irq.c b/arch/sparc/kernel/irq.c
index bcd678d8fc0d131cbdb9d5cbcd600dc3f5b3aea5..2e67ef6746944f54c14900a5688b3e243c0cd975 100644
--- a/arch/sparc/kernel/irq.c
+++ b/arch/sparc/kernel/irq.c
@@ -444,7 +444,7 @@ void leon_irq_queue_execute(void)
 
 		if (likely(p_elem->handler)) {
 
-			if (p_elem->handler(p_elem->irq, p_elem->data))
+			if (!p_elem->handler(p_elem->irq, p_elem->data))
 				leon_irq_queue(p_elem);
 			else
 				list_add_tail(&p_elem->handler_node,