Browse Source

qcacld-3.0: Fix assert for link adapter user after free

Link adapters are added to tail of hdd adapter list after ml adapter. When
rmmod, remove and delete all adapters from head of the list, so ml adapter
is removed before link adapters, all of it's link adapters are deleted
at same time, later link adpaters are removed from the list, user after
free lead to assert.

To fix it, when a ml adapter is deleted from hdd adapter list, need let
all it's link adapters deleted from hdd adapter list first.

Change-Id: I9a4657000e994ef64d08a6b1fa354cef0b1be6bd
CRs-Fixed: 3278312
Jianmin Zhu 2 years ago
parent
commit
d7705f55e1
1 changed files with 3 additions and 0 deletions
  1. 3 0
      core/hdd/src/wlan_hdd_mlo.c

+ 3 - 0
core/hdd/src/wlan_hdd_mlo.c

@@ -199,6 +199,9 @@ QDF_STATUS hdd_wlan_unregister_mlo_interfaces(struct hdd_adapter *adapter,
 		link_adapter = mlo_adapter_info->link_adapter[i];
 		if (!link_adapter)
 			continue;
+		qdf_copy_macaddr(&adapter_mac, &link_adapter->mac_addr);
+		ucfg_dp_destroy_intf(link_adapter->hdd_ctx->psoc, &adapter_mac);
+		hdd_remove_adapter(link_adapter->hdd_ctx, link_adapter);
 		hdd_mlo_close_adapter(link_adapter, rtnl_held);
 	}