On Sun, Feb 15, 2009 at 2:58 AM, Johannes Berg <johannes@xxxxxxxxxxxxxxxx> wrote: > On Fri, 2009-02-13 at 21:33 -0800, Luis R. Rodriguez wrote: >> If cfg80211 is built into the kernel there is perhaps a small >> time window betwen nl80211_init() and regulatory_init() where >> cfg80211_regdomain hasn't yet been initialized to let the >> wireless core do its work. During that rare case and time >> frame (if its even possible) we don't allow user regulatory >> changes as cfg80211 is working on enabling its first regulatory >> domain. >> >> Signed-off-by: Luis R. Rodriguez <lrodriguez@xxxxxxxxxxx> >> --- >> net/wireless/nl80211.c | 9 +++++++++ >> 1 files changed, 9 insertions(+), 0 deletions(-) >> >> diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c >> index db973f2..6f4dedb 100644 >> --- a/net/wireless/nl80211.c >> +++ b/net/wireless/nl80211.c >> @@ -1876,6 +1876,15 @@ static int nl80211_req_set_reg(struct sk_buff *skb, struct genl_info *info) >> int r; >> char *data = NULL; >> >> + /* >> + * You should only get this when cfg80211 hasn't yet initialized >> + * completely when built-in to the kernel right between the time >> + * window between nl80211_init() and regulatory_init(), if that is >> + * even possible. >> + */ >> + if (!cfg80211_regdomain) >> + return -EINPROGRESS; >> + > > But that variable access here is racy too. Right. > It might be ok anyway because > the variable can never be NULL again after the first assignment That's what I was going for. > but in > that case the assignment needs to take care to assign something fully > created ... Can you elaborate on what you mean? Luis -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html