cfg80211: fix alignment problem in scan request
The memory layout for scan requests was rather wrong, we put the scan SSIDs before the channels which could lead to the channel pointers being unaligned in memory. It turns out that using a pointer to the channel array isn't necessary anyway since we can embed a zero-length array into the struct. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
ad5351db89
commit
5ba63533bb
@ -65,7 +65,6 @@ static int cfg80211_conn_scan(struct wireless_dev *wdev)
|
||||
if (!request)
|
||||
return -ENOMEM;
|
||||
|
||||
request->channels = (void *)((char *)request + sizeof(*request));
|
||||
if (wdev->conn->params.channel)
|
||||
request->channels[0] = wdev->conn->params.channel;
|
||||
else {
|
||||
@ -82,7 +81,7 @@ static int cfg80211_conn_scan(struct wireless_dev *wdev)
|
||||
}
|
||||
}
|
||||
request->n_channels = n_channels;
|
||||
request->ssids = (void *)(request->channels + n_channels);
|
||||
request->ssids = (void *)&request->channels[n_channels];
|
||||
request->n_ssids = 1;
|
||||
|
||||
memcpy(request->ssids[0].ssid, wdev->conn->params.ssid,
|
||||
|
Reference in New Issue
Block a user