From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: JaeGwon Go <ceo@logictree.app>
Cc: linux-usb@vger.kernel.org, westeri@kernel.org,
andreas.noever@gmail.com, YehezkelShB@gmail.com,
linux-kernel@vger.kernel.org, stable@vger.kernel.org
Subject: Re: [PATCH] thunderbolt: Send header-only XDomain properties changed response
Date: Mon, 2 Nov 2026 15:19:28 +0100 [thread overview]
Message-ID: <20261102141928.GX158991@black.igk.intel.com> (raw)
In-Reply-To: <20261029081834.91559-1-ceo@logictree.app>
Hi,
On Thu, Oct 29, 2026 at 05:18:34PM +0900, JaeGwon Go wrote:
> Commit 19813551701d ("thunderbolt: xdomain: Avoid potential stack OOB
> read") turned struct tb_xdp_properties_changed_response into a union of
> struct tb_xdp_error_response and struct tb_xdp_header, so that
> tb_xdp_handle_error() can safely read the error field of a received
> response. tb_xdp_properties_changed_response() still sends sizeof(res),
> so since that commit the response Linux sends is 36 bytes instead of
> 32: it carries the zeroed error field, and its XDomain length field
> says 6 dwords instead of 5. The other responses changed by that commit
> are not affected, because their non-error members are already larger
> than struct tb_xdp_error_response.
>
> macOS sends this response as the header only. macOS 27.2 (26B123) keeps
> re-sending PROPERTIES_CHANGED_REQUEST when it gets the longer response:
> after link-up it repeats the request every 1.5 s, ten times, and then
> resets the link, about 15 seconds after it came up. thunderbolt-net
> logs in and passes traffic before the reset. The same host stayed
> connected to the same Mac for about 23 hours while the Mac ran macOS
> 27.0.1, so the change in behavior came with macOS 27.2.
>
> Send only the header again, as before that commit. The union stays, so
> a received response still has room for the error field. Linux
> requesters accept the shorter response: tb_xdomain_match() requires
> only frame.size >= response_size / 4, and tb_xdp_handle_error() reads
> the error field only when the type is ERROR_RESPONSE.
>
> Tested on an ASMedia ASM4242 USB4 host running an Ubuntu 7.0.0-38
> kernel, connected to a Mac17,6 running macOS 27.2. With this change
> macOS stops re-sending after the first answers, and tracing shows an
> 8-dword response with length 5, the same as the response macOS sends.
> The link has stayed up for over 1.5 hours, about 80 minutes of which
> carried a multi-gigabyte transfer every few minutes. Not tested: a
> Linux peer, the error response path, and macOS releases other than
> 27.2.
>
> The analysis, the fix and the tests were done with an AI coding
> assistant.
>
> Fixes: 19813551701d ("thunderbolt: xdomain: Avoid potential stack OOB read")
> Cc: stable@vger.kernel.org
> Assisted-by: Claude:claude-opus-5-5
> Signed-off-by: JaeGwon Go <ceo@logictree.app>
Applied to thunderbolt.git/fixes, thanks!
prev parent reply other threads:[~2026-11-02 14:20 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-29 8:18 JaeGwon Go
2026-11-02 14:19 ` Mika Westerberg [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=20261102141928.GX158991@black.igk.intel.com \
--to=mika.westerberg@linux.intel.com \
--cc=YehezkelShB@gmail.com \
--cc=andreas.noever@gmail.com \
--cc=ceo@logictree.app \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=westeri@kernel.org \
/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®