Forráskód Böngészése

qcacld-3.0: Release dev_hold before interface cleanup

hdd_for_each_adapter_dev_held_safe API takes dev_hold and
during cleanup of interface, dev is unregistered. So later
when dev_put is called, it results in illegal access to
unregistered dev.
Fix this issue by releasing dev_hold before interface cleanup.

Change-Id: Ib6bfe1a985f21be107b69beec0f92feccc98f34e
CRs-Fixed: 2855833
Surabhi Vishnoi 4 éve
szülő
commit
df560d46c2
1 módosított fájl, 6 hozzáadás és 3 törlés
  1. 6 3
      core/hdd/src/wlan_hdd_main.c

+ 6 - 3
core/hdd/src/wlan_hdd_main.c

@@ -18554,13 +18554,16 @@ wlan_hdd_del_p2p_interface(struct hdd_context *hdd_ctx)
 			if (vdev_sync)
 				osif_vdev_sync_wait_for_ops(vdev_sync);
 
+			hdd_adapter_dev_put_debug(
+				adapter, NET_DEV_HOLD_DEL_P2P_INTERFACE);
+
 			hdd_clean_up_interface(hdd_ctx, adapter);
 
 			if (vdev_sync)
 				osif_vdev_sync_destroy(vdev_sync);
-		}
-		hdd_adapter_dev_put_debug(adapter,
-					  NET_DEV_HOLD_DEL_P2P_INTERFACE);
+		} else
+			hdd_adapter_dev_put_debug(
+				adapter, NET_DEV_HOLD_DEL_P2P_INTERFACE);
 	}
 }