diff options
author | Paul Mackerras <paulus@samba.org> | 2005-11-25 22:12:01 +1100 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2005-11-25 22:12:01 +1100 |
commit | 26925c5910ab77fc95b4d8bb6d98780b50ab1e5a (patch) | |
tree | 7d7506b3aedeea4db8b8659f046850db97503a89 /kernel/irq/manage.c | |
parent | 55bb239e5464ecde046af3e45052ef06efda6444 (diff) | |
parent | cd0cca7bf5e201dcea5632f78ad9b37cb419a5df (diff) | |
download | kernel_samsung_crespo-26925c5910ab77fc95b4d8bb6d98780b50ab1e5a.zip kernel_samsung_crespo-26925c5910ab77fc95b4d8bb6d98780b50ab1e5a.tar.gz kernel_samsung_crespo-26925c5910ab77fc95b4d8bb6d98780b50ab1e5a.tar.bz2 |
Merge ../linux-2.6
Diffstat (limited to 'kernel/irq/manage.c')
-rw-r--r-- | kernel/irq/manage.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 3bd7226..81c49a4 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -36,6 +36,9 @@ void synchronize_irq(unsigned int irq) { struct irq_desc *desc = irq_desc + irq; + if (irq >= NR_IRQS) + return; + while (desc->status & IRQ_INPROGRESS) cpu_relax(); } @@ -60,6 +63,9 @@ void disable_irq_nosync(unsigned int irq) irq_desc_t *desc = irq_desc + irq; unsigned long flags; + if (irq >= NR_IRQS) + return; + spin_lock_irqsave(&desc->lock, flags); if (!desc->depth++) { desc->status |= IRQ_DISABLED; @@ -86,6 +92,9 @@ void disable_irq(unsigned int irq) { irq_desc_t *desc = irq_desc + irq; + if (irq >= NR_IRQS) + return; + disable_irq_nosync(irq); if (desc->action) synchronize_irq(irq); @@ -108,6 +117,9 @@ void enable_irq(unsigned int irq) irq_desc_t *desc = irq_desc + irq; unsigned long flags; + if (irq >= NR_IRQS) + return; + spin_lock_irqsave(&desc->lock, flags); switch (desc->depth) { case 0: @@ -163,6 +175,9 @@ int setup_irq(unsigned int irq, struct irqaction * new) unsigned long flags; int shared = 0; + if (irq >= NR_IRQS) + return -EINVAL; + if (desc->handler == &no_irq_type) return -ENOSYS; /* |