From 09121df9d7767b0c00310015503aaebb2e8dae58 Mon Sep 17 00:00:00 2001 From: Hanumanth Reddy Pothula Date: Thu, 5 Oct 2017 17:23:43 +0530 Subject: [PATCH] qcacld-3.0: Fix frame lenth information to cfg80211 Propagation from qcacld-2.0 to qcacld-3.0 During BSS frame update, frame_len is calculated as size of ieee80211_mgmt and ielen. Since ieee80211_mgmt is a generic frame structure and different frame structures are defined under union this may exceed the actual frame len. Fix by calculatiing offset of variable(ies) and ies length. Change-Id: Ied8e4e604e41de1ac5ccc047ef5cc3cdb05a9445 CRs-Fixed: 2121711 --- core/hdd/src/wlan_hdd_cfg80211.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index bea4e2f0c483..91b40005175e 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -14649,7 +14649,8 @@ struct cfg80211_bss *wlan_hdd_cfg80211_inform_bss_frame(struct hdd_adapter *adap struct ieee80211_channel *chan; struct ieee80211_mgmt *mgmt = NULL; struct cfg80211_bss *bss_status = NULL; - size_t frame_len = sizeof(struct ieee80211_mgmt) + ie_length; + size_t frame_len = ie_length + offsetof(struct ieee80211_mgmt, + u.probe_resp.variable); int rssi = 0; struct hdd_context *hdd_ctx; struct timespec ts;