Преглед на файлове

qcacld-3.0: Fix vdev deadlock in check for leaks

Currently in API hdd_check_for_objmgr_peer_leaks, acquired vdev
lock and in this API calling wlan_objmgr_vdev_peer_detach which
again trying to acquire vdev lock leads to dead lock.

This scenario hits when disable CONFIG_LEAK_DETECTION flag and
observed while SSR.

To fix this race condition, delete vdev lock in
hdd_check_for_objmgr_peer_leaks.

Change-Id: I325979a22a8042dcf71bdaf19c1ba870917f8b60
CRs-Fixed: 3641544
Vinod Kumar Myadam преди 1 година
родител
ревизия
bb780547d8
променени са 1 файла, в които са добавени 0 реда и са изтрити 2 реда
  1. 0 2
      core/hdd/src/wlan_hdd_main.c

+ 0 - 2
core/hdd/src/wlan_hdd_main.c

@@ -4175,7 +4175,6 @@ static void hdd_check_for_objmgr_peer_leaks(struct wlan_objmgr_psoc *psoc)
 
 	/* get module id which cause the leak and release ref */
 	wlan_objmgr_for_each_psoc_vdev(psoc, vdev_id, vdev) {
-		wlan_vdev_obj_lock(vdev);
 		wlan_objmgr_for_each_vdev_peer(vdev, peer) {
 			qdf_atomic_t *ref_id_dbg;
 			int ref_id;
@@ -4185,7 +4184,6 @@ static void hdd_check_for_objmgr_peer_leaks(struct wlan_objmgr_psoc *psoc)
 			wlan_objmgr_for_each_refs(ref_id_dbg, ref_id, refs)
 				wlan_objmgr_peer_release_ref(peer, ref_id);
 		}
-		wlan_vdev_obj_unlock(vdev);
 	}
 }