Kaynağa Gözat

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 yıl önce
ebeveyn
işleme
7a65740e47
1 değiştirilmiş dosya ile 13 ekleme ve 2 silme
  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;
 	}