From: tom watson 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. Signed-off-by: Andrew Morton --- 25-akpm/drivers/net/wan/z85230.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) diff -puN drivers/net/wan/z85230.c~drivers-net-wan-z85230c-interrupt-handling-fix drivers/net/wan/z85230.c --- 25/drivers/net/wan/z85230.c~drivers-net-wan-z85230c-interrupt-handling-fix Thu Feb 24 17:39:03 2005 +++ 25-akpm/drivers/net/wan/z85230.c Thu Feb 24 17:39:03 2005 @@ -734,7 +734,7 @@ irqreturn_t z8530_interrupt(int irq, voi 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 @@ irqreturn_t z8530_interrupt(int irq, voi /* 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) _