mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	wifi: mac80211: check basic rates validity
When userspace sets basic rates, it might send us some rates list that's empty or consists of invalid values only. We're currently ignoring invalid values and then may end up with a rates bitmap that's empty, which later results in a warning. Reject the call if there were no valid rates. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
		
							parent
							
								
									b27f07c50a
								
							
						
					
					
						commit
						ce04abc3fc
					
				
					 1 changed files with 11 additions and 10 deletions
				
			
		| 
						 | 
				
			
			@ -2611,6 +2611,17 @@ static int ieee80211_change_bss(struct wiphy *wiphy,
 | 
			
		|||
	if (!sband)
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
 | 
			
		||||
	if (params->basic_rates) {
 | 
			
		||||
		if (!ieee80211_parse_bitrates(link->conf->chandef.width,
 | 
			
		||||
					      wiphy->bands[sband->band],
 | 
			
		||||
					      params->basic_rates,
 | 
			
		||||
					      params->basic_rates_len,
 | 
			
		||||
					      &link->conf->basic_rates))
 | 
			
		||||
			return -EINVAL;
 | 
			
		||||
		changed |= BSS_CHANGED_BASIC_RATES;
 | 
			
		||||
		ieee80211_check_rate_mask(link);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (params->use_cts_prot >= 0) {
 | 
			
		||||
		link->conf->use_cts_prot = params->use_cts_prot;
 | 
			
		||||
		changed |= BSS_CHANGED_ERP_CTS_PROT;
 | 
			
		||||
| 
						 | 
				
			
			@ -2632,16 +2643,6 @@ static int ieee80211_change_bss(struct wiphy *wiphy,
 | 
			
		|||
		changed |= BSS_CHANGED_ERP_SLOT;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (params->basic_rates) {
 | 
			
		||||
		ieee80211_parse_bitrates(link->conf->chandef.width,
 | 
			
		||||
					 wiphy->bands[sband->band],
 | 
			
		||||
					 params->basic_rates,
 | 
			
		||||
					 params->basic_rates_len,
 | 
			
		||||
					 &link->conf->basic_rates);
 | 
			
		||||
		changed |= BSS_CHANGED_BASIC_RATES;
 | 
			
		||||
		ieee80211_check_rate_mask(link);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (params->ap_isolate >= 0) {
 | 
			
		||||
		if (params->ap_isolate)
 | 
			
		||||
			sdata->flags |= IEEE80211_SDATA_DONT_BRIDGE_PACKETS;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue