Hi,
i think this is more correct - On failing of shared irqs one should
at least reenable interrupts and free the allocated buffer.
Apply before anyone copys this into his/her code ...
Index: arch/mips/pmc/cp7000/irq.c
===================================================================
RCS file: /cvs/linux/arch/mips/pmc/cp7000/irq.c,v
retrieving revision 1.1
diff -u -r1.1 irq.c
--- arch/mips/pmc/cp7000/irq.c 2000/12/13 21:07:34 1.1
+++ arch/mips/pmc/cp7000/irq.c 2001/01/29 23:50:34
@@ -327,8 +327,11 @@
if ((old = *p) != NULL) {
/* Can't share interrupts unless both agree to */
- if (!(old->flags & action->flags & SA_SHIRQ))
+ if (!(old->flags & action->flags & SA_SHIRQ)) {
+ restore_flags(flags);
+ kfree(action);
return -EBUSY;
+ }
/* add new interrupt at end of irq queue */
do {
p = &old->next;
--
Florian Lohoff flo@rfc822.org +49-5201-669912
Why is it called "common sense" when nobody seems to have any?
|