Parcourir la source

qcacld-3.0: Clear registered peers in SAP mode after SSR

Currently, the SAP peers are not cleared after an SSR in shutdown path
inside hdd_reset_all_adapters. This can lead to mem leak in the case
the device undergoes SSR with connected SAP clients.

To prevent this memleak, rectify the existing check to include SAP
mode also while cleaning up the registered peers.

Change-Id: I8faf54d420cd9198e257a3d93bbf1b37da2f3eb8
CRs-Fixed: 2546805
Sourav Mohapatra il y a 5 ans
Parent
commit
0203b6d254
1 fichiers modifiés avec 16 ajouts et 10 suppressions
  1. 16 10
      core/hdd/src/wlan_hdd_main.c

+ 16 - 10
core/hdd/src/wlan_hdd_main.c

@@ -6301,19 +6301,25 @@ QDF_STATUS hdd_reset_all_adapters(struct hdd_context *hdd_ctx)
 			qdf_copy_macaddr(&peer_macaddr,
 					 &sta_ctx->conn_info.bssid);
 
-		} else if (adapter->device_mode == QDF_P2P_GO_MODE) {
-			clear_bit(SOFTAP_BSS_STARTED, &adapter->event_flags);
+		} else if (adapter->device_mode == QDF_P2P_GO_MODE ||
+			   adapter->device_mode == QDF_SAP_MODE) {
+
+			/*
+			 * Clear SOFTAP_BSS_STARTED bit only in case of P2P GO
+			 * as SAP is restarted after SSR.
+			 */
+			if (adapter->device_mode == QDF_P2P_GO_MODE)
+				clear_bit(SOFTAP_BSS_STARTED,
+					  &adapter->event_flags);
 
+			/* Loop over and deregister every registered peer */
 			hdd_for_each_station(adapter->sta_info_list, sta_info,
 					     index) {
-				hdd_debug(
-				    "[SSR] deregister STA MAC:"
-				    QDF_MAC_ADDR_STR,
-				    QDF_MAC_ADDR_ARRAY(
-				    sta_info->sta_mac.bytes));
-				hdd_softap_deregister_sta(
-						adapter,
-						sta_info);
+				hdd_debug("[SSR] deregister STA MAC:"
+					  QDF_MAC_ADDR_STR, QDF_MAC_ADDR_ARRAY(
+					  sta_info->sta_mac.bytes));
+
+				hdd_softap_deregister_sta(adapter, sta_info);
 			}
 		}