1. 08 Apr, 2010 1 commit
    • Ben Hutchings's avatar
      3c503: Fix IRQ probing · b0cf4dfb
      Ben Hutchings authored
      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 ab08999d '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: default avatarBen Hutchings <ben@decadent.org.uk>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b0cf4dfb
  2. 07 Apr, 2010 23 commits
  3. 06 Apr, 2010 15 commits
  4. 05 Apr, 2010 1 commit