Search Linux Wireless

Re: [PATCH 04/10] nl80211: disallow user requests prior to regulatory_init()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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. It might be ok anyway because
the variable can never be NULL again after the first assignment, but in
that case the assignment needs to take care to assign something fully
created ...

johannes

Attachment: signature.asc
Description: This is a digitally signed message part


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux