From 8e15ed92a1afa526b521aab3a5269881b9bec1e7 Mon Sep 17 00:00:00 2001 From: Sravan Kumar Kairam Date: Thu, 5 Jul 2018 19:00:13 +0530 Subject: [PATCH] qcacmn: Fix mem leak during dp peer delete AST entry has been allocated at the time of peer creation at DP. But during peer delete it is not deleted. This leads to memory leak in the wlan driver. To fix this delete ast entry at the time of peer deletion. Change-Id: I8d16b575bd44bf06415c3b1cc44c1c7833c88137 CRs-Fixed: 2273601 --- dp/wifi3.0/dp_main.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 4ccc2ebf41a0..436b16944b78 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -3579,6 +3579,7 @@ static inline void dp_peer_delete_ast_entries(struct dp_soc *soc, DP_PEER_ITERATE_ASE_LIST(peer, ast_entry, temp_ast_entry) dp_peer_del_ast(soc, ast_entry); + peer->self_ast_entry = NULL; TAILQ_INIT(&peer->ast_entry_list); qdf_spin_unlock_bh(&soc->ast_lock); } @@ -4239,6 +4240,13 @@ void dp_peer_unref_delete(void *peer_handle) /* remove the reference to the peer from the hash table */ dp_peer_find_hash_remove(soc, peer); + qdf_spin_lock_bh(&soc->ast_lock); + if (peer->self_ast_entry) { + dp_peer_del_ast(soc, peer->self_ast_entry); + peer->self_ast_entry = NULL; + } + qdf_spin_unlock_bh(&soc->ast_lock); + TAILQ_FOREACH(tmppeer, &peer->vdev->peer_list, peer_list_elem) { if (tmppeer == peer) { found = 1;