diff options
author | Roland Dreier <rolandd@cisco.com> | 2009-01-14 21:44:39 -0800 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2009-01-14 21:44:39 -0800 |
commit | cbbe1efa4972350286b52cb48aefaa11e198c0fb (patch) | |
tree | ddcfdea04829b9d2f84b0e9d6a9adc6eb86a5f13 /kernel/posix-timers.c | |
parent | b8a1b1ce14252b59b2d5c89de25b54f9bfd4cc5e (diff) |
IPoIB: Fix deadlock between ipoib_open() and child interface create
Fix a deadlock between child interface creation/deletion and ipoib
start/stop. The former takes vlan_mutex, and then might take RTNL via
register_netdev()/unregister_netdev(). The latter is executed with
RTNL held, and tries to take vlan_mutex, which can lead to an AB-BA
deadlock.
Fix this by having the child interface creation/deletion code take the
RTNL first so vlan_mutex always nests inside RTNL. We can use
register_netdevice() for child interfaces because we form the
interface name from the parent interface and hence don't need the '%'
expansion of register_netdev().
Reported-by: Yossi Etigin <yosefe@voltaire.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'kernel/posix-timers.c')
0 files changed, 0 insertions, 0 deletions