diff options
author | roel kluin <roel.kluin@gmail.com> | 2009-09-01 02:24:53 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-09-03 02:45:54 -0400 |
commit | ab08999d6029bb2c79c16be5405d63d2bedbdfea (patch) | |
tree | f2269b6e55119a582e8791434a5ac63b49af6e27 /drivers/net/3c503.c | |
parent | aa1330766c49199bdab4d4a9096d98b072df9044 (diff) |
WARNING: some request_irq() failures ignored in el2_open()
Request_irq() may fail in different ways, handle accordingly.
Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/3c503.c')
-rw-r--r-- | drivers/net/3c503.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/net/3c503.c b/drivers/net/3c503.c index 134638a9759f..81c148a59adf 100644 --- a/drivers/net/3c503.c +++ b/drivers/net/3c503.c | |||
@@ -383,7 +383,7 @@ out: | |||
383 | static int | 383 | static int |
384 | el2_open(struct net_device *dev) | 384 | el2_open(struct net_device *dev) |
385 | { | 385 | { |
386 | int retval = -EAGAIN; | 386 | int retval; |
387 | 387 | ||
388 | if (dev->irq < 2) { | 388 | if (dev->irq < 2) { |
389 | int irqlist[] = {5, 9, 3, 4, 0}; | 389 | int irqlist[] = {5, 9, 3, 4, 0}; |
@@ -391,7 +391,8 @@ el2_open(struct net_device *dev) | |||
391 | 391 | ||
392 | outb(EGACFR_NORM, E33G_GACFR); /* Enable RAM and interrupts. */ | 392 | outb(EGACFR_NORM, E33G_GACFR); /* Enable RAM and interrupts. */ |
393 | do { | 393 | do { |
394 | if (request_irq (*irqp, NULL, 0, "bogus", dev) != -EBUSY) { | 394 | retval = request_irq(*irqp, NULL, 0, "bogus", dev); |
395 | if (retval >= 0) { | ||
395 | /* Twinkle the interrupt, and check if it's seen. */ | 396 | /* Twinkle the interrupt, and check if it's seen. */ |
396 | unsigned long cookie = probe_irq_on(); | 397 | unsigned long cookie = probe_irq_on(); |
397 | outb_p(0x04 << ((*irqp == 9) ? 2 : *irqp), E33G_IDCFR); | 398 | outb_p(0x04 << ((*irqp == 9) ? 2 : *irqp), E33G_IDCFR); |
@@ -400,11 +401,14 @@ el2_open(struct net_device *dev) | |||
400 | && ((retval = request_irq(dev->irq = *irqp, | 401 | && ((retval = request_irq(dev->irq = *irqp, |
401 | eip_interrupt, 0, dev->name, dev)) == 0)) | 402 | eip_interrupt, 0, dev->name, dev)) == 0)) |
402 | break; | 403 | break; |
404 | } else { | ||
405 | if (retval != -EBUSY) | ||
406 | return reval; | ||
403 | } | 407 | } |
404 | } while (*++irqp); | 408 | } while (*++irqp); |
405 | if (*irqp == 0) { | 409 | if (*irqp == 0) { |
406 | outb(EGACFR_IRQOFF, E33G_GACFR); /* disable interrupts. */ | 410 | outb(EGACFR_IRQOFF, E33G_GACFR); /* disable interrupts. */ |
407 | return retval; | 411 | return -EAGAIN; |
408 | } | 412 | } |
409 | } else { | 413 | } else { |
410 | if ((retval = request_irq(dev->irq, eip_interrupt, 0, dev->name, dev))) { | 414 | if ((retval = request_irq(dev->irq, eip_interrupt, 0, dev->name, dev))) { |