CVE-2024-56607

wifi: ath12k: fix atomic calls in ath12k_mac_op_set_bitrate_mask()

published December 27, 2024

CVSS
—
EPSS
0%
Percentile
11.6
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

wifi: ath12k: fix atomic calls in ath12k_mac_op_set_bitrate_mask()

When I try to manually set bitrates:

iw wlan0 set bitrates legacy-2.4 1

I get sleeping from invalid context error, see below. Fix that by switching to

use recently introduced ieee80211_iterate_stations_mtx().

Do note that WCN6855 firmware is still crashing, I'm not sure if that firmware

even supports bitrate WMI commands and should we consider disabling

ath12k_mac_op_set_bitrate_mask() for WCN6855? But that's for another patch.

BUG: sleeping function called from invalid context at drivers/net/wireless/ath/ath12k/wmi.c:420

in_atomic(): 0, irqs_disabled(): 0, non_block: 0, pid: 2236, name: iw

preempt_count: 0, expected: 0

RCU nest depth: 1, expected: 0

3 locks held by iw/2236:

#0: ffffffffabc6f1d8 (cb_lock){++++}-{3:3}, at: genl_rcv+0x14/0x40

#1: ffff888138410810 (&rdev->wiphy.mtx){+.+.}-{3:3}, at: nl80211_pre_doit+0x54d/0x800 [cfg80211]

#2: ffffffffab2cfaa0 (rcu_read_lock){....}-{1:2}, at: ieee80211_iterate_stations_atomic+0x2f/0x200 [mac80211]

CPU: 3 UID: 0 PID: 2236 Comm: iw Not tainted 6.11.0-rc7-wt-ath+ #1772

Hardware name: Intel(R) Client Systems NUC8i7HVK/NUC8i7HVB, BIOS HNKBLi70.86A.0067.2021.0528.1339 05/28/2021

Call Trace:

<TASK>

dump_stack_lvl+0xa4/0xe0

dump_stack+0x10/0x20

__might_resched+0x363/0x5a0

? __alloc_skb+0x165/0x340

__might_sleep+0xad/0x160

ath12k_wmi_cmd_send+0xb1/0x3d0 [ath12k]

? ath12k_wmi_init_wcn7850+0xa40/0xa40 [ath12k]

? __netdev_alloc_skb+0x45/0x7b0

? __asan_memset+0x39/0x40

? ath12k_wmi_alloc_skb+0xf0/0x150 [ath12k]

? reacquire_held_locks+0x4d0/0x4d0

ath12k_wmi_set_peer_param+0x340/0x5b0 [ath12k]

ath12k_mac_disable_peer_fixed_rate+0xa3/0x110 [ath12k]

? ath12k_mac_vdev_stop+0x4f0/0x4f0 [ath12k]

ieee80211_iterate_stations_atomic+0xd4/0x200 [mac80211]

ath12k_mac_op_set_bitrate_mask+0x5d2/0x1080 [ath12k]

? ath12k_mac_vif_chan+0x320/0x320 [ath12k]

drv_set_bitrate_mask+0x267/0x470 [mac80211]

ieee80211_set_bitrate_mask+0x4cc/0x8a0 [mac80211]

? __this_cpu_preempt_check+0x13/0x20

nl80211_set_tx_bitrate_mask+0x2bc/0x530 [cfg80211]

? nl80211_parse_tx_bitrate_mask+0x2320/0x2320 [cfg80211]

? trace_contention_end+0xef/0x140

? rtnl_unlock+0x9/0x10

? nl80211_pre_doit+0x557/0x800 [cfg80211]

genl_family_rcv_msg_doit+0x1f0/0x2e0

? genl_family_rcv_msg_attrs_parse.isra.0+0x250/0x250

? ns_capable+0x57/0xd0

genl_family_rcv_msg+0x34c/0x600

? genl_family_rcv_msg_dumpit+0x310/0x310

? __lock_acquire+0xc62/0x1de0

? he_set_mcs_mask.isra.0+0x8d0/0x8d0 [cfg80211]

? nl80211_parse_tx_bitrate_mask+0x2320/0x2320 [cfg80211]

? cfg80211_external_auth_request+0x690/0x690 [cfg80211]

genl_rcv_msg+0xa0/0x130

netlink_rcv_skb+0x14c/0x400

? genl_family_rcv_msg+0x600/0x600

? netlink_ack+0xd70/0xd70

? rwsem_optimistic_spin+0x4f0/0x4f0

? genl_rcv+0x14/0x40

? down_read_killable+0x580/0x580

? netlink_deliver_tap+0x13e/0x350

? __this_cpu_preempt_check+0x13/0x20

genl_rcv+0x23/0x40

netlink_unicast+0x45e/0x790

? netlink_attachskb+0x7f0/0x7f0

netlink_sendmsg+0x7eb/0xdb0

? netlink_unicast+0x790/0x790

? __this_cpu_preempt_check+0x13/0x20

? selinux_socket_sendmsg+0x31/0x40

? netlink_unicast+0x790/0x790

__sock_sendmsg+0xc9/0x160

____sys_sendmsg+0x620/0x990

? kernel_sendmsg+0x30/0x30

? __copy_msghdr+0x410/0x410

? __kasan_check_read+0x11/0x20

? mark_lock+0xe6/0x1470

___sys_sendmsg+0xe9/0x170

? copy_msghdr_from_user+0x120/0x120

? __lock_acquire+0xc62/0x1de0

? do_fault_around+0x2c6/0x4e0

? do_user_addr_fault+0x8c1/0xde0

? reacquire_held_locks+0x220/0x4d0

? do_user_addr_fault+0x8c1/0xde0

? __kasan_check_read+0x11/0x20

? __fdget+0x4e/0x1d0

? sockfd_lookup_light+0x1a/0x170

__sys_sendmsg+0xd2/0x180

? __sys_sendmsg_sock+0x20/0x20

? reacquire_held_locks+0x4d0/0x4d0

? debug_smp_processor_id+0x17/0x20

__x64_sys_sendmsg+0x72/0xb0

? lockdep_hardirqs_on+0x7d/0x100

x64_sys_call+0x894/0x9f0

do_syscall_64+0x64/0x130

entry_SYSCALL_64_after_

---truncated---

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00218 · 11.6th percentile
Published
2024-12-27T14:51Z
EPSS history
Timeline
  • 27 DEC 14:51Z
    wifi: ath12k: fix atomic calls in ath12k_mac_op_set_bitrate_mask()
    cvelistv5