[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#566522: [PATCH] 3c503: Fix IRQ probing



From: Ben Hutchings <ben@decadent.org.uk>
Date: Sun, 04 Apr 2010 17:33:29 +0100

> The driver attempts to select an IRQ for the NIC automatically by
> testing which of the supported IRQs are available and then probing
> each available IRQ with probe_irq_{on,off}().  There are obvious race
> conditions here, besides which:
> 1. The test for availability is done by passing a NULL handler, which
>    now always returns -EINVAL, thus the device cannot be opened:
>    <http://bugs.debian.org/566522>
> 2. probe_irq_off() will report only the first ISA IRQ handled,
>    potentially leading to a false negative.
> 
> There was another bug that meant it ignored all error codes from
> request_irq() except -EBUSY, so it would 'succeed' despite this
> (possibly causing conflicts with other ISA devices).  This was fixed
> by ab08999d6029bb2c79c16be5405d63d2bedbdfea 'WARNING: some
> request_irq() failures ignored in el2_open()', which exposed bug 1.
> 
> This patch:
> 1. Replaces the use of probe_irq_{on,off}() with a real interrupt handler
> 2. Adds a delay before checking the interrupt-seen flag
> 3. Disables interrupts on all failure paths
> 4. Distinguishes error codes from the second request_irq() call,
>    consistently with the first
> 
> Compile-tested only.
> 
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

This looks logically fine, but I'm tossing this into net-next-2.6
because of the limited tester space for this driver.

Thanks Ben.



Reply to: