diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index be055fc774..01cba6cd72 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -6183,8 +6183,6 @@ struct hdd_adapter *hdd_open_adapter(struct hdd_context *hdd_ctx, uint8_t sessio return adapter; err_free_netdev: - wlan_hdd_release_intf_addr(hdd_ctx, adapter->mac_addr.bytes); - if (ndev) free_netdev(ndev); diff --git a/core/hdd/src/wlan_hdd_p2p.c b/core/hdd/src/wlan_hdd_p2p.c index cbdbadca38..900ed67cce 100644 --- a/core/hdd/src/wlan_hdd_p2p.c +++ b/core/hdd/src/wlan_hdd_p2p.c @@ -763,10 +763,13 @@ struct wireless_dev *__wlan_hdd_add_virtual_intf(struct wiphy *wiphy, p2p_device_address.bytes, name_assign_type, true); } else { + uint8_t *device_address = + wlan_hdd_get_intf_addr(hdd_ctx, mode); adapter = hdd_open_adapter(hdd_ctx, mode, name, - wlan_hdd_get_intf_addr(hdd_ctx, - mode), + device_address, name_assign_type, true); + if (!adapter) + wlan_hdd_release_intf_addr(hdd_ctx, device_address); } if (!adapter) {