[PATCH] drivers/net/wan/z85230.c

From: tom watson
Date: Wed Feb 23 2005 - 16:13:20 EST



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)