1. 30 8月, 2005 1 次提交
    • M
      [BNX2]: Fix rtnl deadlock in bnx2_close · afdc08b9
      Michael Chan 提交于
      This fixes an rtnl deadlock problem when flush_scheduled_work() is
      called from bnx2_close(). In rare cases, linkwatch_event() may be on
      the workqueue from a previous close of a different device and it will
      try to get the rtnl lock which is already held by dev_close().
      
      The fix is to set a flag if we are in the reset task which is run
      from the workqueue. bnx2_close() will loop until the flag is cleared.
      As suggested by Jeff Garzik, the loop is changed to call msleep(1)
      instead of yield() in the original patch.
      
      flush_scheduled_work() is also moved to bnx2_remove_one() before the
      netdev is freed.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      afdc08b9
  2. 27 5月, 2005 1 次提交