On Fri, 2010-12-31 at 15:47 +0100, roel kluin wrote: > Fix -EBUSY test for request_irq(). > > Signed-off-by: Roel Kluin > --- > drivers/net/eepro.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > I just found this in the code, no bug was observed. Is this patch needed? the test > for an -EBUSY return by request_irq() occurs much more frequently in kernel code. > > diff --git a/drivers/net/eepro.c b/drivers/net/eepro.c > index 7c82631..47cfecb 100644 > --- a/drivers/net/eepro.c > +++ b/drivers/net/eepro.c > @@ -920,7 +920,7 @@ static int eepro_grab_irq(struct net_device *dev) > > eepro_sw2bank0(ioaddr); /* Switch back to Bank 0 */ > > - if (request_irq (*irqp, NULL, IRQF_SHARED, "bogus", dev) != EBUSY) { > + if (request_irq (*irqp, NULL, IRQF_SHARED, "bogus", dev) != -EBUSY) { > unsigned long irq_mask; > /* Twinkle the interrupt, and check if it's seen */ > irq_mask = probe_irq_on(); This condition is completely bogus - request_irq() with a NULL handler now returns -EINVAL before even checking whether the IRQ is in use. The code should be fixed along the lines of what I did for 3c503 in commit b0cf4dfb7cd21556efd9a6a67edcba0840b4d98d. The e2100 and hp net drivers have the same bug. Ben. -- Ben Hutchings Once a job is fouled up, anything done to improve it makes it worse.