Subject: CVE-2024-42226: usb: xhci: prevent potential failure in handle_tx_event() for Transfer events without TRB

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

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

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

usb: xhci: prevent potential failure in handle_tx_event() for Transfer events without TRB

Some transfer events don't always point to a TRB, and consequently don't
have a endpoint ring. In these cases, function handle_tx_event() should
not proceed, because if 'ep->skip' is set, the pointer to the endpoint
ring is used.

To prevent a potential failure and make the code logical, return after
checking the completion code for a Transfer event without TRBs.

The Linux kernel CVE team has assigned CVE-2024-42226 to this issue.

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

	Fixed in 6.1.98 with commit 948554f1bb16
	Fixed in 6.1.99 with commit 1f4a10cb826f
	Fixed in 6.6.39 with commit 9a24eb8010c2
	Fixed in 6.6.40 with commit 69bed24c8213
	Fixed in 6.9.9 with commit c0ee01e8ba19
	Fixed in 6.10 with commit 66cb618bf0bb

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-2024-42226
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/usb/host/xhci-ring.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/948554f1bb16e15b90006c109c3a558c66d4c4ac
	https://git.kernel.org/stable/c/1f4a10cb826fdec5cd442df010bcb3043bfd6464
	https://git.kernel.org/stable/c/9a24eb8010c2dc6a2eba56e3eb9fc07d14ffe00a
	https://git.kernel.org/stable/c/69bed24c82139bbad0a78a075e1834a2ea7bd064
	https://git.kernel.org/stable/c/c0ee01e8ba19ff7edc98f68a114d4789faa219b9
	https://git.kernel.org/stable/c/66cb618bf0bb82859875b00eeffaf223557cb416