Explorar o código

qcacld-3.0: Release the peer reference in twt_get_status

In ucfg_twt_get_all_peer_session_params peer reference is
acquired and its not released leading to the reference leak,
leading to vdev destroy timeout.

Release the peer reference to resolve the issue.

Change-Id: I9992376473c30365f15fcdb8e374c856bc169d6b
CRs-Fixed: 3027189
Deeksha Gupta %!s(int64=3) %!d(string=hai) anos
pai
achega
3ecfc16c77

+ 7 - 2
components/cp_stats/dispatcher/src/wlan_cp_stats_mc_ucfg_api.c

@@ -253,16 +253,21 @@ ucfg_twt_get_all_peer_session_params(struct wlan_objmgr_psoc *psoc_obj,
 		}
 
 		if (opmode == QDF_STA_MODE &&
-		    num_twt_session >= TWT_PEER_MAX_SESSIONS)
+		    num_twt_session >= TWT_PEER_MAX_SESSIONS) {
+			wlan_objmgr_peer_release_ref(peer, WLAN_CP_STATS_ID);
 			goto done;
+		}
 
 		if (opmode == QDF_SAP_MODE &&
-		    num_twt_session >= (sap_max_peer * TWT_PEER_MAX_SESSIONS))
+		    num_twt_session >= (sap_max_peer * TWT_PEER_MAX_SESSIONS)) {
+			wlan_objmgr_peer_release_ref(peer, WLAN_CP_STATS_ID);
 			goto done;
+		}
 
 		peer_next = wlan_peer_get_next_active_peer_of_vdev(
 							vdev, peer_list, peer,
 							WLAN_CP_STATS_ID);
+		wlan_objmgr_peer_release_ref(peer, WLAN_CP_STATS_ID);
 		peer = peer_next;
 	}