diff options
author | Ondrej Zary <linux@rainbow-software.org> | 2011-06-12 09:40:49 +0000 |
---|---|---|
committer | David S. Miller <davem@conan.davemloft.net> | 2011-06-13 18:25:19 -0400 |
commit | 1ffde03d2aa112750468cff07efc9e0a504517dd (patch) | |
tree | 737d80e83c8e3ca1232dc54e21320260f63c99aa | |
parent | b9cabe52c27cf834137f3aaa46da23bcf32284e8 (diff) | |
download | linux-stable-1ffde03d2aa112750468cff07efc9e0a504517dd.tar.gz linux-stable-1ffde03d2aa112750468cff07efc9e0a504517dd.tar.bz2 linux-stable-1ffde03d2aa112750468cff07efc9e0a504517dd.zip |
3c503: fix broken IRQ autoprobing
Fix broken IRQ autoprobing in 3c503 driver:
- improper IRQ freeing (does not free IRQs causes WARN)
- missing break when an working IRQ is found
The driver works with this patch.
Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
Reviewed-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: David S. Miller <davem@conan.davemloft.net>
-rw-r--r-- | drivers/net/3c503.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/3c503.c b/drivers/net/3c503.c index d84f6e8903a5..5b732988d493 100644 --- a/drivers/net/3c503.c +++ b/drivers/net/3c503.c @@ -412,7 +412,7 @@ el2_open(struct net_device *dev) outb_p(0x04 << ((*irqp == 9) ? 2 : *irqp), E33G_IDCFR); outb_p(0x00, E33G_IDCFR); msleep(1); - free_irq(*irqp, el2_probe_interrupt); + free_irq(*irqp, &seen); if (!seen) continue; @@ -422,6 +422,7 @@ el2_open(struct net_device *dev) continue; if (retval < 0) goto err_disable; + break; } while (*++irqp); if (*irqp == 0) { |