Search Linux Wireless

Re: [PATCH] cfg80211: update information elements in cached BSS struct

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

 



On Thu, 2010-12-09 at 15:05 +0100, Sven Neumann wrote:
> When a cached BSS struct is updated because a new beacon was received,
> the code replaces the cached information elements by the IEs from the
> new beacon. However it did not update the pub.information_elements
> and pub.len_information_elements fields leaving them either pointing
> to the old beacon IEs or in an inconsistent state where the data is
> replaced by the new beacon IEs but len_information_elements still has
> its value from the first beacon.
> 
> Fix this by updating the information elements fields if they are
> pointing to beacon IEs.
> 
> Signed-off-by: Sven Neumann <s.neumann@xxxxxxxxxxxx>

Reviewed-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>

> ---
>  net/wireless/scan.c |   11 +++++++++++
>  1 files changed, 11 insertions(+), 0 deletions(-)
> 
> diff --git a/net/wireless/scan.c b/net/wireless/scan.c
> index 503ebb8..ea427f4 100644
> --- a/net/wireless/scan.c
> +++ b/net/wireless/scan.c
> @@ -464,6 +464,9 @@ cfg80211_bss_update(struct cfg80211_registered_device *dev,
>  		if (res->pub.beacon_ies) {
>  			size_t used = dev->wiphy.bss_priv_size + sizeof(*res);
>  			size_t ielen = res->pub.len_beacon_ies;
> +			bool information_elements_is_beacon_ies =
> +				(found->pub.information_elements ==
> +				 found->pub.beacon_ies);
>  
>  			if (found->pub.beacon_ies &&
>  			    !found->beacon_ies_allocated &&
> @@ -487,6 +490,14 @@ cfg80211_bss_update(struct cfg80211_registered_device *dev,
>  					found->pub.len_beacon_ies = ielen;
>  				}
>  			}
> +
> +			/* Override IEs if they were from a beacon before */
> +			if (information_elements_is_beacon_ies) {
> +				found->pub.information_elements =
> +					found->pub.beacon_ies;
> +				found->pub.len_information_elements =
> +					found->pub.len_beacon_ies;
> +			}
>  		}
>  
>  		kref_put(&res->ref, bss_release);


--
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


[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