diff options
author | Ondrej Zary <linux@rainbow-software.org> | 2011-06-12 11:40:49 +0200 |
---|---|---|
committer | David S. Miller <davem@conan.davemloft.net> | 2011-06-14 00:25:19 +0200 |
commit | 1ffde03d2aa112750468cff07efc9e0a504517dd (patch) | |
tree | 737d80e83c8e3ca1232dc54e21320260f63c99aa /drivers/net | |
parent | ieee802154: Don't leak memory in ieee802154_nl_fill_phy (diff) | |
download | linux-1ffde03d2aa112750468cff07efc9e0a504517dd.tar.xz linux-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>
Diffstat (limited to 'drivers/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) { |