瀏覽代碼

qcacld-3.0: Unregister wext interface, on STA interface down

Host registers wext handlers, during STA interface UP. But not
unregistering during interface down, lending user to issue iwpriv
commands though interface is down.

Unregister wext interface, by initializing wireless_handlers to NULL
during interface down.

Change-Id: I839d733595672c8c43e5a085ea5f1e97d98c4c31
CRs-Fixed: 1064023
Hanumanth Reddy Pothula 8 年之前
父節點
當前提交
7a65740e47
共有 1 個文件被更改,包括 13 次插入2 次删除
  1. 13 2
      core/hdd/src/wlan_hdd_main.c

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

@@ -2742,10 +2742,21 @@ void hdd_cleanup_actionframe(hdd_context_t *hdd_ctx, hdd_adapter_t *adapter)
  * Return: None.
  */
 void hdd_station_adapter_deinit(hdd_context_t *hdd_ctx,
-				hdd_adapter_t *adapter)
+				hdd_adapter_t *adapter,
+				bool rtnl_held)
 {
 	ENTER_DEV(adapter->dev);
 
+	if (adapter->dev) {
+		if (rtnl_held)
+			adapter->dev->wireless_handlers = NULL;
+		else {
+			rtnl_lock();
+			adapter->dev->wireless_handlers = NULL;
+			rtnl_unlock();
+		}
+	}
+
 	if (test_bit(INIT_TX_RX_SUCCESS, &adapter->event_flags)) {
 		hdd_deinit_tx_rx(adapter);
 		clear_bit(INIT_TX_RX_SUCCESS, &adapter->event_flags);
@@ -2798,7 +2809,7 @@ void hdd_deinit_adapter(hdd_context_t *hdd_ctx, hdd_adapter_t *adapter,
 	case QDF_P2P_CLIENT_MODE:
 	case QDF_P2P_DEVICE_MODE:
 	{
-		hdd_station_adapter_deinit(hdd_ctx, adapter);
+		hdd_station_adapter_deinit(hdd_ctx, adapter, rtnl_held);
 		break;
 	}