Przeglądaj źródła

qcacld-3.0: Add ssr protection for scan callback function

Add ssr protection to scan_block_work to avoid null
reference access.

Change-Id: I0ff111abf2bbdcb7b0c3a3c255396c14b0b59f01
CRs-Fixed: 2066506
Kabilan Kannan 7 lat temu
rodzic
commit
98440ce38e
1 zmienionych plików z 13 dodań i 1 usunięć
  1. 13 1
      core/hdd/src/wlan_hdd_scan.c

+ 13 - 1
core/hdd/src/wlan_hdd_scan.c

@@ -711,17 +711,22 @@ static bool wlan_hdd_sap_skip_scan_check(hdd_context_t *hdd_ctx,
 }
 #endif
 
-void wlan_hdd_cfg80211_scan_block_cb(struct work_struct *work)
+static void __wlan_hdd_cfg80211_scan_block_cb(struct work_struct *work)
 {
 	hdd_adapter_t *adapter = container_of(work,
 					      hdd_adapter_t, scan_block_work);
 	struct cfg80211_scan_request *request;
+	hdd_context_t *hdd_ctx;
 
 	if (WLAN_HDD_ADAPTER_MAGIC != adapter->magic) {
 		hdd_err("HDD adapter context is invalid");
 		return;
 	}
 
+	hdd_ctx = WLAN_HDD_GET_CTX(adapter);
+	if (0 != wlan_hdd_validate_context(hdd_ctx))
+		return;
+
 	request = adapter->request;
 	if (request) {
 		request->n_ssids = 0;
@@ -736,6 +741,13 @@ void wlan_hdd_cfg80211_scan_block_cb(struct work_struct *work)
 	}
 }
 
+void wlan_hdd_cfg80211_scan_block_cb(struct work_struct *work)
+{
+	cds_ssr_protect(__func__);
+	__wlan_hdd_cfg80211_scan_block_cb(work);
+	cds_ssr_unprotect(__func__);
+}
+
 /**
  * wlan_hdd_copy_bssid_scan_request() - API to copy the bssid to Scan request
  * @scan_req: Pointer to CSR Scan Request