mwifiex: avoid storing random_mac in private
Application will keep track of whether MAC address randomization is enabled or not during scan. But at present driver is storing 'random_mac' in mwifiex_private which implies even after scan is done driver has some reference to the earlier 'scan request'. To avoid this, make use of 'mac_addr' variable in 'scan_request' to store 'random_mac'. This structure will be freed by cfg80211 once scan is done. Signed-off-by: Ganapathi Bhat <gbhat@marvell.com> Reviewed-by: Brian Norris <briannorris@chromium.org> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
@@ -2529,15 +2529,12 @@ mwifiex_cfg80211_scan(struct wiphy *wiphy,
|
||||
priv->scan_request = request;
|
||||
|
||||
if (request->flags & NL80211_SCAN_FLAG_RANDOM_ADDR) {
|
||||
ether_addr_copy(priv->random_mac, request->mac_addr);
|
||||
for (i = 0; i < ETH_ALEN; i++) {
|
||||
priv->random_mac[i] &= request->mac_addr_mask[i];
|
||||
priv->random_mac[i] |= get_random_int() &
|
||||
~(request->mac_addr_mask[i]);
|
||||
request->mac_addr[i] &= request->mac_addr_mask[i];
|
||||
request->mac_addr[i] |=
|
||||
get_random_int() & ~(request->mac_addr_mask[i]);
|
||||
}
|
||||
ether_addr_copy(user_scan_cfg->random_mac, priv->random_mac);
|
||||
} else {
|
||||
eth_zero_addr(priv->random_mac);
|
||||
ether_addr_copy(user_scan_cfg->random_mac, request->mac_addr);
|
||||
}
|
||||
|
||||
user_scan_cfg->num_ssids = request->n_ssids;
|
||||
|
@@ -680,7 +680,6 @@ struct mwifiex_private {
|
||||
struct mwifiex_user_scan_chan hidden_chan[MWIFIEX_USER_SCAN_CHAN_MAX];
|
||||
u8 assoc_resp_ht_param;
|
||||
bool ht_param_present;
|
||||
u8 random_mac[ETH_ALEN];
|
||||
};
|
||||
|
||||
|
||||
|
@@ -1946,7 +1946,8 @@ mwifiex_active_scan_req_for_passive_chan(struct mwifiex_private *priv)
|
||||
|
||||
adapter->active_scan_triggered = true;
|
||||
if (priv->scan_request->flags & NL80211_SCAN_FLAG_RANDOM_ADDR)
|
||||
ether_addr_copy(user_scan_cfg->random_mac, priv->random_mac);
|
||||
ether_addr_copy(user_scan_cfg->random_mac,
|
||||
priv->scan_request->mac_addr);
|
||||
user_scan_cfg->num_ssids = priv->scan_request->n_ssids;
|
||||
user_scan_cfg->ssid_list = priv->scan_request->ssids;
|
||||
|
||||
|
Reference in New Issue
Block a user