CVE-2024-56607
Publication date:
27/12/2024
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
wifi: ath12k: fix atomic calls in ath12k_mac_op_set_bitrate_mask()<br />
<br />
When I try to manually set bitrates:<br />
<br />
iw wlan0 set bitrates legacy-2.4 1<br />
<br />
I get sleeping from invalid context error, see below. Fix that by switching to<br />
use recently introduced ieee80211_iterate_stations_mtx().<br />
<br />
Do note that WCN6855 firmware is still crashing, I&#39;m not sure if that firmware<br />
even supports bitrate WMI commands and should we consider disabling<br />
ath12k_mac_op_set_bitrate_mask() for WCN6855? But that&#39;s for another patch.<br />
<br />
BUG: sleeping function called from invalid context at drivers/net/wireless/ath/ath12k/wmi.c:420<br />
in_atomic(): 0, irqs_disabled(): 0, non_block: 0, pid: 2236, name: iw<br />
preempt_count: 0, expected: 0<br />
RCU nest depth: 1, expected: 0<br />
3 locks held by iw/2236:<br />
#0: ffffffffabc6f1d8 (cb_lock){++++}-{3:3}, at: genl_rcv+0x14/0x40<br />
#1: ffff888138410810 (&rdev->wiphy.mtx){+.+.}-{3:3}, at: nl80211_pre_doit+0x54d/0x800 [cfg80211]<br />
#2: ffffffffab2cfaa0 (rcu_read_lock){....}-{1:2}, at: ieee80211_iterate_stations_atomic+0x2f/0x200 [mac80211]<br />
CPU: 3 UID: 0 PID: 2236 Comm: iw Not tainted 6.11.0-rc7-wt-ath+ #1772<br />
Hardware name: Intel(R) Client Systems NUC8i7HVK/NUC8i7HVB, BIOS HNKBLi70.86A.0067.2021.0528.1339 05/28/2021<br />
Call Trace:<br />
<br />
dump_stack_lvl+0xa4/0xe0<br />
dump_stack+0x10/0x20<br />
__might_resched+0x363/0x5a0<br />
? __alloc_skb+0x165/0x340<br />
__might_sleep+0xad/0x160<br />
ath12k_wmi_cmd_send+0xb1/0x3d0 [ath12k]<br />
? ath12k_wmi_init_wcn7850+0xa40/0xa40 [ath12k]<br />
? __netdev_alloc_skb+0x45/0x7b0<br />
? __asan_memset+0x39/0x40<br />
? ath12k_wmi_alloc_skb+0xf0/0x150 [ath12k]<br />
? reacquire_held_locks+0x4d0/0x4d0<br />
ath12k_wmi_set_peer_param+0x340/0x5b0 [ath12k]<br />
ath12k_mac_disable_peer_fixed_rate+0xa3/0x110 [ath12k]<br />
? ath12k_mac_vdev_stop+0x4f0/0x4f0 [ath12k]<br />
ieee80211_iterate_stations_atomic+0xd4/0x200 [mac80211]<br />
ath12k_mac_op_set_bitrate_mask+0x5d2/0x1080 [ath12k]<br />
? ath12k_mac_vif_chan+0x320/0x320 [ath12k]<br />
drv_set_bitrate_mask+0x267/0x470 [mac80211]<br />
ieee80211_set_bitrate_mask+0x4cc/0x8a0 [mac80211]<br />
? __this_cpu_preempt_check+0x13/0x20<br />
nl80211_set_tx_bitrate_mask+0x2bc/0x530 [cfg80211]<br />
? nl80211_parse_tx_bitrate_mask+0x2320/0x2320 [cfg80211]<br />
? trace_contention_end+0xef/0x140<br />
? rtnl_unlock+0x9/0x10<br />
? nl80211_pre_doit+0x557/0x800 [cfg80211]<br />
genl_family_rcv_msg_doit+0x1f0/0x2e0<br />
? genl_family_rcv_msg_attrs_parse.isra.0+0x250/0x250<br />
? ns_capable+0x57/0xd0<br />
genl_family_rcv_msg+0x34c/0x600<br />
? genl_family_rcv_msg_dumpit+0x310/0x310<br />
? __lock_acquire+0xc62/0x1de0<br />
? he_set_mcs_mask.isra.0+0x8d0/0x8d0 [cfg80211]<br />
? nl80211_parse_tx_bitrate_mask+0x2320/0x2320 [cfg80211]<br />
? cfg80211_external_auth_request+0x690/0x690 [cfg80211]<br />
genl_rcv_msg+0xa0/0x130<br />
netlink_rcv_skb+0x14c/0x400<br />
? genl_family_rcv_msg+0x600/0x600<br />
? netlink_ack+0xd70/0xd70<br />
? rwsem_optimistic_spin+0x4f0/0x4f0<br />
? genl_rcv+0x14/0x40<br />
? down_read_killable+0x580/0x580<br />
? netlink_deliver_tap+0x13e/0x350<br />
? __this_cpu_preempt_check+0x13/0x20<br />
genl_rcv+0x23/0x40<br />
netlink_unicast+0x45e/0x790<br />
? netlink_attachskb+0x7f0/0x7f0<br />
netlink_sendmsg+0x7eb/0xdb0<br />
? netlink_unicast+0x790/0x790<br />
? __this_cpu_preempt_check+0x13/0x20<br />
? selinux_socket_sendmsg+0x31/0x40<br />
? netlink_unicast+0x790/0x790<br />
__sock_sendmsg+0xc9/0x160<br />
____sys_sendmsg+0x620/0x990<br />
? kernel_sendmsg+0x30/0x30<br />
? __copy_msghdr+0x410/0x410<br />
? __kasan_check_read+0x11/0x20<br />
? mark_lock+0xe6/0x1470<br />
___sys_sendmsg+0xe9/0x170<br />
? copy_msghdr_from_user+0x120/0x120<br />
? __lock_acquire+0xc62/0x1de0<br />
? do_fault_around+0x2c6/0x4e0<br />
? do_user_addr_fault+0x8c1/0xde0<br />
? reacquire_held_locks+0x220/0x4d0<br />
? do_user_addr_fault+0x8c1/0xde0<br />
? __kasan_check_read+0x11/0x20<br />
? __fdget+0x4e/0x1d0<br />
? sockfd_lookup_light+0x1a/0x170<br />
__sys_sendmsg+0xd2/0x180<br />
? __sys_sendmsg_sock+0x20/0x20<br />
? reacquire_held_locks+0x4d0/0x4d0<br />
? debug_smp_processor_id+0x17/0x20<br />
__x64_sys_sendmsg+0x72/0xb0<br />
? lockdep_hardirqs_on+0x7d/0x100<br />
x64_sys_call+0x894/0x9f0<br />
do_syscall_64+0x64/0x130<br />
entry_SYSCALL_64_after_<br />
---truncated---
Severity CVSS v4.0: Pending analysis
Last modification:
08/10/2025