Subject: CVE-2023-52594: wifi: ath9k: Fix potential array-index-out-of-bounds read in ath9k_htc_txstatus()

From: Greg Kroah-Hartman <[email-masked]>

Description
===========

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

wifi: ath9k: Fix potential array-index-out-of-bounds read in ath9k_htc_txstatus()

Fix an array-index-out-of-bounds read in ath9k_htc_txstatus(). The bug
occurs when txs->cnt, data from a URB provided by a USB device, is
bigger than the size of the array txs->txstatus, which is
HTC_MAX_TX_STATUS. WARN_ON() already checks it, but there is no bug
handling code after the check. Make the function return if that is the
case.

Found by a modified version of syzkaller.

UBSAN: array-index-out-of-bounds in htc_drv_txrx.c
index 13 is out of range for type '__wmi_event_txstatus [12]'
Call Trace:
 ath9k_htc_txstatus
 ath9k_wmi_event_tasklet
 tasklet_action_common
 __do_softirq
 irq_exit_rxu
 sysvec_apic_timer_interrupt

The Linux kernel CVE team has assigned CVE-2023-52594 to this issue.

Affected and fixed versions
===========================

	Fixed in 4.19.307 with commit f44f073c7811
	Fixed in 5.4.269 with commit f11f0fd1ad6c
	Fixed in 5.10.210 with commit 84770a996ad8
	Fixed in 5.15.149 with commit 9003fa9a0198
	Fixed in 6.1.77 with commit 25c6f49ef59b
	Fixed in 6.6.16 with commit e4f4bac7d3b6
	Fixed in 6.7.4 with commit be609c7002dd
	Fixed in 6.8 with commit 2adc886244df

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2023-52594
will be updated if fixes are backported, please check that for the most
up to date information about this issue.

Affected files
==============

The file(s) affected by this issue are:
	drivers/net/wireless/ath/ath9k/htc_drv_txrx.c

Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/f44f073c78112ff921a220d01b86d09f2ace59bc
	https://git.kernel.org/stable/c/f11f0fd1ad6c11ae7856d4325fe9d05059767225
	https://git.kernel.org/stable/c/84770a996ad8d7f121ff2fb5a8d149aad52d64c1
	https://git.kernel.org/stable/c/9003fa9a0198ce004b30738766c67eb7373479c9
	https://git.kernel.org/stable/c/25c6f49ef59b7a9b80a3f7ab9e95268a1b01a234
	https://git.kernel.org/stable/c/e4f4bac7d3b64eb75f70cd3345712de6f68a215d
	https://git.kernel.org/stable/c/be609c7002dd4504b15b069cb7582f4c778548d1
	https://git.kernel.org/stable/c/2adc886244dff60f948497b59affb6c6ebb3c348