Jelajahi Sumber

qcacld-3.0: Avoid SAP start fail for addr leak

When create virtual interface, if psoc idle restart return failed,
close adapter without calling wlan_hdd_release_intf_addr,
addr is leaked and used out.
When SAP start, create virtual interface wlan2 will fail for
MAC is not available.

To fix it, when create virtual interface failed, call
wlan_hdd_release_intf_addr before close adapter.

Change-Id: I84493985eaa7dda5b8b620c7e86bdf94c89ce2f8
CRs-Fixed: 3480866
Jianmin Zhu 1 tahun lalu
induk
melakukan
d0287c9f46
1 mengubah file dengan 3 tambahan dan 1 penghapusan
  1. 3 1
      core/hdd/src/wlan_hdd_p2p.c

+ 3 - 1
core/hdd/src/wlan_hdd_p2p.c

@@ -688,6 +688,7 @@ struct wireless_dev *__wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
 	struct wlan_objmgr_vdev *vdev;
 	int ret;
 	struct hdd_adapter_create_param create_params = {0};
+	uint8_t *device_address = NULL;
 
 	hdd_enter();
 
@@ -786,7 +787,6 @@ struct wireless_dev *__wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
 					   name_assign_type, true,
 					   &create_params);
 	} else {
-		uint8_t *device_address;
 		if (strnstr(name, "p2p", 3) && mode == QDF_STA_MODE) {
 			hdd_debug("change mode to p2p device");
 			mode = QDF_P2P_DEVICE_MODE;
@@ -829,6 +829,8 @@ struct wireless_dev *__wlan_hdd_add_virtual_intf(struct wiphy *wiphy,
 	return adapter->dev->ieee80211_ptr;
 
 close_adapter:
+	if (device_address)
+		wlan_hdd_release_intf_addr(hdd_ctx, device_address);
 	hdd_close_adapter(hdd_ctx, adapter, true);
 
 	return ERR_PTR(-EINVAL);