Преглед изворни кода

Revert "qcacmn: Free NDI peers/vdev at time of ndi_delete/driver unload"

This reverts commit I04631ffd611d6ded318ddfb65b2dfeba479c9bdc.
Currently, for all the peers cleanup is done in lim and wma layers
to remove this peers. The original change is deleting the ndi
peer in HDD, and can lead to memory overwrites.
Hence reverting the change.

Change-Id: Id0083c3d1612f0fdccb6fca2c9cc4c03f607a139
CRs-Fixed: 2507142
Bala Venkatesh пре 5 година
родитељ
комит
352834005d
2 измењених фајлова са 2 додато и 64 уклоњено
  1. 2 46
      components/nan/core/src/nan_api.c
  2. 0 18
      os_if/nan/src/os_if_nan.c

+ 2 - 46
components/nan/core/src/nan_api.c

@@ -64,43 +64,6 @@ nan_psoc_notif_failed:
 	return status;
 }
 
-static void nan_psoc_delete_peer(struct wlan_objmgr_psoc *psoc,
-				 void *peer, void *arg)
-{
-	if (WLAN_PEER_NDP == wlan_peer_get_peer_type(peer))
-		wlan_objmgr_peer_obj_delete(peer);
-}
-
-static void nan_psoc_delete_vdev(struct wlan_objmgr_psoc *psoc,
-				 void *vdev, void *arg)
-{
-	enum nan_datapath_state state;
-	struct nan_vdev_priv_obj *priv_obj = nan_get_vdev_priv_obj(vdev);
-
-	if (!priv_obj) {
-		nan_err("priv_obj is null");
-		return;
-	}
-	/*
-	 * user may issue rrmod wlan without explicitly NDI Delete.
-	 * In that case pending NDI vdev state will not be DELETED/DELETEING
-	 * Forcefully delete vdev object
-	 */
-	if (QDF_NDI_MODE != wlan_vdev_mlme_get_opmode(vdev))
-		return;
-
-	qdf_spin_lock_bh(&priv_obj->lock);
-	state = priv_obj->state;
-	qdf_spin_unlock_bh(&priv_obj->lock);
-
-	/* if already in deleted or deleting state - do not delete */
-	if (state == NAN_DATA_NDI_DELETED_STATE ||
-	    state == NAN_DATA_NDI_DELETING_STATE)
-		return;
-
-	wlan_objmgr_vdev_obj_delete(vdev);
-}
-
 static QDF_STATUS nan_psoc_obj_destroyed_notification(
 				struct wlan_objmgr_psoc *psoc, void *arg_list)
 {
@@ -113,15 +76,8 @@ static QDF_STATUS nan_psoc_obj_destroyed_notification(
 		return QDF_STATUS_E_FAULT;
 	}
 
-	wlan_objmgr_iterate_obj_list(psoc, WLAN_PEER_OP,
-				     nan_psoc_delete_peer,
-				     NULL, 1, WLAN_NAN_ID);
-
-	wlan_objmgr_iterate_obj_list(psoc, WLAN_VDEV_OP,
-				     nan_psoc_delete_vdev,
-				     NULL, 1, WLAN_NAN_ID);
-
-	status = wlan_objmgr_psoc_component_obj_detach(psoc, WLAN_UMAC_COMP_NAN,
+	status = wlan_objmgr_psoc_component_obj_detach(psoc,
+						       WLAN_UMAC_COMP_NAN,
 						       nan_obj);
 	if (QDF_IS_STATUS_ERROR(status))
 		nan_err("nan_obj detach failed");

+ 0 - 18
os_if/nan/src/os_if_nan.c

@@ -33,7 +33,6 @@
 #include "wlan_objmgr_psoc_obj.h"
 #include "wlan_objmgr_pdev_obj.h"
 #include "wlan_objmgr_vdev_obj.h"
-#include "wlan_objmgr_peer_obj.h"
 #include "wlan_utility.h"
 #include "wlan_osif_request_manager.h"
 
@@ -421,17 +420,6 @@ destroy_sync:
 	return errno;
 }
 
-static void os_if_nan_vdev_delete_peer(struct wlan_objmgr_psoc *psoc,
-				       void *peer, void *nan_vdev)
-{
-	/* if peer belongs to nan vdev */
-	if (nan_vdev == wlan_peer_get_vdev(peer)) {
-		osif_debug("deleting peer: %pM",
-			   wlan_peer_get_macaddr(peer));
-		wlan_objmgr_peer_obj_delete(peer);
-	}
-}
-
 static int __os_if_nan_process_ndi_delete(struct wlan_objmgr_psoc *psoc,
 					  char *iface_name,
 					  struct nlattr **tb)
@@ -458,12 +446,6 @@ static int __os_if_nan_process_ndi_delete(struct wlan_objmgr_psoc *psoc,
 		nla_get_u16(tb[QCA_WLAN_VENDOR_ATTR_NDP_TRANSACTION_ID]);
 	vdev_id = wlan_vdev_get_id(nan_vdev);
 	num_peers = ucfg_nan_get_active_peers(nan_vdev);
-
-	/* delete all peer for this interface first */
-	wlan_objmgr_iterate_obj_list(psoc, WLAN_PEER_OP,
-				     os_if_nan_vdev_delete_peer,
-				     nan_vdev, 1, WLAN_NAN_ID);
-
 	/*
 	 * os_if_get_ndi_vdev_by_ifname increments ref count
 	 * decrement here since vdev returned by that api is not used any more