В ядре Linux устранена следующая уязвимость:
wifi: ath12k: исправлено несогласованное состояние arvif в путях ошибок vdev_create
ath12k_mac_vdev_create() имеет три ошибки пути, из-за которых arvif покидает
в противоречивом состоянии:
1. При сбое ath12k_wmi_vdev_create() функция возвращает непосредственный возврат.
без очистки arvif->ar, который уже был установлен до WMI
позвони. Последующая проверка кода arvif->ar для определения готовности vdev.
увидит значение, отличное от NULL, несмотря на отсутствие vdev в прошивке.
2.
Когда ath12k_wmi_send_peer_delete_cmd() завершается сбоем в err_peer_del,
код перешел к ошибке: пропустил очистку узла DP и откат vdev,
оставляя num_created_vdevs, карты vdev и членство в списках arvif активными.
3. Когда ath12k_wait_for_peer_delete_done() терпит неудачу, код переходит к
err_vdev_del: пропуск очистки узла DP. Исправьте это, изменив вместо этого ошибку ath12k_wmi_vdev_create() на goto err.
возврата напрямую, маршрутизируя оба пути отказа err_peer_del через
err_dp_peer_del: для правильного отката узла DP и vdev, а также консолидации.
очистка состояния arvif при ошибке:.
Протестировано на: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.115823.3
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: wifi: ath12k: fix inconsistent arvif state in vdev_create error paths ath12k_mac_vdev_create() has three error path issues that leave arvif in an inconsistent state: 1. When ath12k_wmi_vdev_create() fails, the function returns directly without clearing arvif->ar, which was already set before the WMI call. Subsequent code checking arvif->ar to determine vdev readiness will see a non-NULL value despite no vdev existing in firmware. 2. When ath12k_wmi_send_peer_delete_cmd() fails in err_peer_del, the code jumped to err: skipping the DP peer cleanup and vdev rollback, leaving num_created_vdevs, vdev maps and arvif list membership live. 3. When ath12k_wait_for_peer_delete_done() fails, the code jumped to err_vdev_del: skipping the DP peer cleanup. Fix by changing the ath12k_wmi_vdev_create() failure to goto err instead of returning directly, routing both err_peer_del failure paths through err_dp_peer_del: for proper DP peer and vdev rollback, and consolidating the arvif state cleanup at err:. Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.1.c5-00302-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.115823.3
Характеристики атаки
Последствия
Строка CVSS v3.1