Search Linux Wireless

Re: [PATCH] wifi: nl80211: allow MBSSID Tx VAP bringup without MBSSID IEs

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

 



On Thu, 2024-07-04 at 13:01 +0530, Sowmiya Sree Elavalagan wrote:
> 
> I agree, but based on the current hostapd implementation, this flag NL80211_MBSSID_CONFIG_ATTR_EMA is set only when num_bss > 1. This flag will not be set when we do not have any non Tx BSS.
> 

Sure, but "based on the current hostapd implementation" isn't really
enough for the kernel to protect itself from userspace doing weird
things that it isn't prepared to handle :-)

It is, however, an argument for simply prohibiting it, I guess? If no
userspace is going to do it anyway?

> Even if this NL80211_MBSSID_CONFIG_ATTR_EMA is set when no TX BSS is present, can just fill beacon template in 0th index of ieee80211_ema_beacons structure, if mbssid_ies are not present.  
> Shall we handle this in mac80211 layer in ieee80211_beacon_get_ap_ema_list function like below
>  
> ieee80211_beacon_get_ap_ema_list(struct ieee80211_hw *hw,
>                                  struct ieee80211_chanctx_conf *chanctx_conf)
> {
>          ...
> 
> -       if (!beacon->mbssid_ies || !beacon->mbssid_ies->cnt)
> -               return NULL;
> -
> -       ema = kzalloc(struct_size(ema, bcn, beacon->mbssid_ies->cnt),
> +       if (!beacon->mbssid_ies || !beacon->mbssid_ies->cnt) {
> +               ema = kzalloc(struct_size(ema, bcn, 1), GFP_ATOMIC);
> +               total_beacons = 1;
> +
> +       } else {
> +               ema = kzalloc(struct_size(ema, bcn, beacon->mbssid_ies->cnt),
>                       GFP_ATOMIC);
> +               total_beacons = beacon->mbssid_ies->cnt;
> +       }
> +
>         if (!ema)
>                 return NULL;
>  
> -       for (ema->cnt = 0; ema->cnt < beacon->mbssid_ies->cnt; ema->cnt++) {
> +       for (ema->cnt = 0; ema->cnt < total_beacons; ema->cnt++) {
>            .....
> 

I don't know, is that really the only place? I didn't audit _all_ of it,
just looked at the first plausible code path that might be broken ...

Why can't we just prohibit it?

johannes





[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux