From: "Toke Høiland-Jørgensen" <toke@toke.dk>
To: Minsuk Kang <linuxlovemin@yonsei.ac.kr>, linux-wireless@vger.kernel.org
Cc: kvalo@kernel.org, dokyungs@yonsei.ac.kr, jisoo.jang@yonsei.ac.kr,
Minsuk Kang <linuxlovemin@yonsei.ac.kr>
Subject: Re: [PATCH] wifi: ath9k: Fix potential array-index-out-of-bounds read in ath9k_htc_txstatus()
Date: Fri, 10 Nov 2023 12:28:36 +0100 [thread overview]
Message-ID: <87cywhvod7.fsf@toke.dk> (raw)
In-Reply-To: <20231110064143.1356077-1-linuxlovemin@yonsei.ac.kr>
Minsuk Kang <linuxlovemin@yonsei.ac.kr> writes:
> 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
>
> Signed-off-by: Minsuk Kang <linuxlovemin@yonsei.ac.kr>
> ---
> drivers/net/wireless/ath/ath9k/htc_drv_txrx.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
> index 800177021baf..c628332f2562 100644
> --- a/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
> +++ b/drivers/net/wireless/ath/ath9k/htc_drv_txrx.c
> @@ -652,9 +652,10 @@ void ath9k_htc_txstatus(struct ath9k_htc_priv *priv, void *wmi_event)
> struct ath9k_htc_tx_event *tx_pend;
> int i;
>
> - for (i = 0; i < txs->cnt; i++) {
> - WARN_ON(txs->cnt > HTC_MAX_TX_STATUS);
> + if (WARN_ON(txs->cnt > HTC_MAX_TX_STATUS))
> + return;
Since this is something that can be triggered by a device sending bad
data, this shouldn't be an unbounded WARN_ON(). We could turn it into a
WARN_ON_ONCE(), or just get rid of it entirely...
-Toke
prev parent reply other threads:[~2023-11-10 18:17 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-10 6:41 [PATCH] wifi: ath9k: Fix potential array-index-out-of-bounds read in ath9k_htc_txstatus() Minsuk Kang
2023-11-10 11:28 ` Toke Høiland-Jørgensen [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87cywhvod7.fsf@toke.dk \
--to=toke@toke.dk \
--cc=dokyungs@yonsei.ac.kr \
--cc=jisoo.jang@yonsei.ac.kr \
--cc=kvalo@kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=linuxlovemin@yonsei.ac.kr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.