diff options
| author | Ian Campbell <icampbell@arcom.com> | 2004-12-02 15:46:29 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-12-02 15:46:29 -0800 | 
| commit | d20a8fb580008dd9f81797bb0bc479f1507b5c01 (patch) | |
| tree | 155a07ac5534d837c243073b5874b098f42838f0 /fs/proc/array.c | |
| parent | ea0f86b0552201bf9ed68186fcc406b69176962c (diff) | |
[PATCH] Avoid deadlock in smc91x driver
This patch avoids a deadlock on rtnl_sem in smc_close() when bringing down
an smc91x interface.  The semaphore is already held by devinet_ioctl() and
the pending work queue contains linkwatch_event() (scheduled by
netif_carrier_off()) which also wants rtnl_sem hence it is unsafe to call
flush_scheduled_work().
The solution is to track whether we have any pending work of our own and
wait for that instead of flushing the entire queue.
I also fixed a typo 'ence' -> 'Hence' and renamed smc_detect_phy to
smc_phy_detect in order to follow the same pattern as the other smc_phy_*
functions.
Signed-off-by: Ian Campbell <icampbell@arcom.com>
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/proc/array.c')
0 files changed, 0 insertions, 0 deletions
