mac80211: split ieee80211_key_alloc/free
authorJohannes Berg <johannes@sipsolutions.net>
Mon, 25 Feb 2008 15:27:45 +0000 (16:27 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 29 Feb 2008 20:42:04 +0000 (15:42 -0500)
commitdb4d1169d0b893bfb7923b6526748fe2c5a7373f
treeebd5ac06685bacc069b162b31f99b33c6191b4c3
parent6f48422a29714ed92f6136d9e7d3ff39c75607d7
mac80211: split ieee80211_key_alloc/free

In order to RCU-ify sta_info, we need to be able to allocate
a key without linking it to an sdata/sta structure (because
allocation cannot be done in an rcu critical section). This
patch splits up ieee80211_key_alloc() and updates all users
appropriately.

While at it, this patch fixes a number of race conditions
such as finally making key replacement atomic, unfortunately
at the expense of more complex code.

Note that this patch documents /existing/ bugs with sta info
and key interaction, there is currently a race condition
when a sta info is freed without holding the RTNL. This will
finally be fixed by a followup patch.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/cfg.c
net/mac80211/ieee80211_ioctl.c
net/mac80211/ieee80211_key.h
net/mac80211/key.c
net/mac80211/sta_info.c