cfg80211: fix locking in nl80211_set_wiphy
authorJohannes Berg <johannes@sipsolutions.net>
Tue, 24 Mar 2009 08:35:46 +0000 (09:35 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Sat, 28 Mar 2009 00:13:20 +0000 (20:13 -0400)
commit4bbf4d56583dd52c429d88f43cb614bdbe5deea6
tree7a3f902a08820342254e0d67607fe870b02620b3
parent3832c287f11ba001bbe48e9be8c59cb9f71f6b43
cfg80211: fix locking in nl80211_set_wiphy

Luis reports that there's a circular locking dependency;
this is because cfg80211_dev_rename() will acquire the
cfg80211_mutex while the device mutex is held, while
this normally is done the other way around. The solution
is to open-code the device-getting in nl80211_set_wiphy
and require holding the mutex around cfg80211_dev_rename
rather than acquiring it within.

Also fix a bug -- rtnl locking is expected by drivers so
we need to provide it.

Reported-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/wireless/core.c
net/wireless/core.h
net/wireless/nl80211.c