While working on a driver for z85230 based board I noticed what looks like it could be a problem. If the interrupt handler is handling an interrupt on port b and an interrupt comes in for port a, it seems to me that the port b handler would be called instead of the port a handler, and possibly hang the board until reset.


Attached is a patch to set the irq methods back to port a before attempting to call them.

Cheers,
Tom.

--- linux-2.6.10/drivers/net/wan/z85230.c	2004-12-24 16:33:49.000000000 -0500
+++ /home/watsontj/z85230.c	2005-02-23 15:26:32.911085451 -0500
@@ -734,7 +734,7 @@
 	u8 intr;
 	static volatile int locker=0;
 	int work=0;
-	struct z8530_irqhandler *irqs=dev->chanA.irqs;
+	struct z8530_irqhandler *irqs;
 	
 	if(locker)
 	{
@@ -758,6 +758,8 @@
 		/* Now walk the chip and see what it is wanting - it may be
 		   an IRQ for someone else remember */
 		   
+		irqs=dev->chanA.irqs;
+
 		if(intr & (CHARxIP|CHATxIP|CHAEXT))
 		{
 			if(intr&CHARxIP)

Reply via email to