From: Chad Aldreda <ca@modelmiser.com>
To: Farhad Alemi <farhad.alemi@berkeley.edu>
Cc: "Toke Høiland-Jørgensen" <toke@toke.dk>,
"Jeff Johnson" <jjohnson@kernel.org>,
falemi@asu.edu, linux-wireless@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [BUG] ath9k_htc_tx_cleanup_timer -- ODEBUG free-active-timer and use-after-free on USB unplug
Date: Mon, 09 Nov 2026 10:34:51 +0000 [thread overview]
Message-ID: <20261109103444.381459-2-ca@modelmiser.com> (raw)
In-Reply-To: <CA+0ovCgiXX28Mdyu5xA4mDU2pPwoByEzEKgLn5JnfapEKg+PmA@mail.gmail.com>
Hi Farhad,
Could you share the reproducer for this one?
Two paths in the code would fit the report. Both end the same way:
the timer re-arms itself (ath9k_htc_tx_cleanup_timer()), and nothing
deletes it before ath9k_htc_disconnect_device() frees the hw.
1. ath9k_fatal_work() calls ath9k_htc_reset(), which re-arms
tx.cleanup_timer without checking ATH_OP_INVALID. A WMI_FATAL_EVENTID
(or beacon-stuck SWBA) that arrives after ath9k_htc_stop() has
finished still queues fatal_work, since WMI events are processed
until ath9k_stop_wmi(). The timer is then armed on a stopped device,
and ieee80211_unregister_hw() does not call stop again.
2. Inside ath9k_htc_stop(), the timer is deleted and priv->mutex is
dropped before cancel_work_sync(&priv->fatal_work). A fatal_work
already waiting on the mutex runs the reset in that gap and re-arms
the timer.
I'd like to know which one your reproducer hits before proposing a
fix. Does it send WMI_FATAL_EVENTID (or let beacons go stuck in
AP/IBSS/mesh mode), and is the interface up or down when it does?
The code reading above was done with an AI assistant (Claude). Nothing
has been tested yet.
Thanks,
Chad
prev parent reply other threads:[~2026-11-09 10:35 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-28 5:25 Farhad Alemi
2026-11-09 10:34 ` Chad Aldreda [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=20261109103444.381459-2-ca@modelmiser.com \
--to=ca@modelmiser.com \
--cc=falemi@asu.edu \
--cc=farhad.alemi@berkeley.edu \
--cc=jjohnson@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=toke@toke.dk \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®