From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-usb@vger.kernel.org, Alan Stern <stern@rowland.harvard.edu>,
linux-kernel@vger.kernel.org, Josef Bacik <josef@toxicpanda.com>,
stable <stable@kernel.org>
Subject: Re: [PATCH 14/19] usb: typec: mux: it5205: fix oops on accessory modes
Date: Fri, 6 Nov 2026 15:54:07 +0100 [thread overview]
Message-ID: <au3qDw094t54vE_a@black.igk.intel.com> (raw)
In-Reply-To: <20261027-llm-usb-v1-14-b9751ddb9c7c@linuxfoundation.org>
On Tue, Oct 27, 2026 at 03:57:54PM +0100, Greg Kroah-Hartman wrote:
> From: Josef Bacik <josef@toxicpanda.com>
>
> typec_set_mode() passes a state without an alternate mode, and the USB
> and accessory modes (TYPEC_MODE_USB2 ... TYPEC_MODE_DEBUG) start at
> TYPEC_STATE_MODAL like the states of the alternate modes. TCPM and UCSI
> set TYPEC_MODE_AUDIO or TYPEC_MODE_DEBUG when such an accessory is
> attached. it5205_mux_set() then reads state->alt->svid: plugging in an
> analog audio adapter is a NULL pointer dereference.
Please just explain here that the code is accessing state->alt->svid
without first checking does state->alt exist.
Then make a note that state->alt is NULL if for example TCPM sets the
mux to an accessory mode TYPEC_MODE_AUDIO or TYPEC_MODE_DEBUG.
> The numbers must not reach the switch either: TYPEC_MODE_AUDIO has the
> value of TYPEC_DP_STATE_D. Without an alternate mode connect the
> SuperSpeed lanes for TYPEC_MODE_USB3 and disconnect them for the rest.
I think what that is trying to say is that this driver needs to handle
the mode value separately with the "normal" USB Type-C modes and the
alternate modes, because those values overlap, right?
> Fixes: 41fe9ea1696c ("usb: typec: mux: Add ITE IT5205 Alternate Mode Passive MUX driver")
> Cc: stable <stable@kernel.org>
> Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> Signed-off-by: Josef Bacik <josef@toxicpanda.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ---
> drivers/usb/typec/mux/it5205.c | 14 ++++++++++----
> 1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/usb/typec/mux/it5205.c b/drivers/usb/typec/mux/it5205.c
> index 2ab2ba6a3cbd..00d5bd55e423 100644
> --- a/drivers/usb/typec/mux/it5205.c
> +++ b/drivers/usb/typec/mux/it5205.c
> @@ -92,13 +92,19 @@ static int it5205_switch_set(struct typec_switch_dev *sw, enum typec_orientation
> static int it5205_mux_set(struct typec_mux_dev *mux, struct typec_mux_state *state)
> {
> struct it5205 *it = typec_mux_get_drvdata(mux);
> + unsigned long mode = state->mode;
> u8 val;
>
> - if (state->mode >= TYPEC_STATE_MODAL &&
> - state->alt->svid != USB_TYPEC_DP_SID)
> - return -EINVAL;
> + if (mode >= TYPEC_STATE_MODAL) {
> + /* USB and accessory modes: not the DP pin assignments */
> + if (!state->alt)
> + mode = mode == TYPEC_MODE_USB3 ? TYPEC_STATE_USB :
> + TYPEC_STATE_SAFE;
So now if the mux is set to an accessory mode, this function returns
successfully, even thought the connector is not actually in that
accessory mode?
Return -EINVAL in that case?
thanks,
> + else if (state->alt->svid != USB_TYPEC_DP_SID)
> + return -EINVAL;
> + }
--
heikki
next prev parent reply other threads:[~2026-11-06 14:54 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-27 14:57 [PATCH 00/19] USB: a bunch of llm-found fixes Greg Kroah-Hartman
2026-10-27 14:57 ` [PATCH 01/19] usb: core: sysfs: take the port lock to read the BOS Greg Kroah-Hartman
2026-10-27 15:10 ` sashiko-bot
2026-11-05 21:17 ` Alan Stern
2026-10-27 14:57 ` [PATCH 02/19] USB: core: signal the end of an sg request last Greg Kroah-Hartman
2026-10-27 15:04 ` sashiko-bot
2026-11-05 21:08 ` Alan Stern
2026-10-27 14:57 ` [PATCH 03/19] usbip: vudc: free the unlink item if the send fails Greg Kroah-Hartman
2026-10-27 15:09 ` sashiko-bot
2026-10-27 14:57 ` [PATCH 04/19] usb: host: oxu210hp-hcd: fix oxu_qh_alloc() deadlock Greg Kroah-Hartman
2026-10-27 15:06 ` sashiko-bot
2026-10-27 14:57 ` [PATCH 05/19] usb: cdns3: switch the role unlocked on resume Greg Kroah-Hartman
2026-10-27 15:27 ` sashiko-bot
2026-10-27 14:57 ` [PATCH 06/19] usb: gadget: snps_udc_plat: lock out the interrupt Greg Kroah-Hartman
2026-10-27 15:05 ` sashiko-bot
2026-10-27 18:17 ` Herve Codina
2026-10-27 14:57 ` [PATCH 07/19] usb: gadget: bdc: the resume callback is optional Greg Kroah-Hartman
2026-10-27 15:06 ` sashiko-bot
2026-10-27 14:57 ` [PATCH 08/19] usb: gadget: uvc: fix oops on a premature STREAMON Greg Kroah-Hartman
2026-10-27 15:22 ` sashiko-bot
2026-10-27 14:57 ` [PATCH 09/19] usb: gadget: f_fs: let the request keep its fence Greg Kroah-Hartman
2026-10-27 15:15 ` sashiko-bot
2026-10-27 14:57 ` [PATCH 10/19] usb: host: ehci-orion: fix the probe without DT Greg Kroah-Hartman
2026-10-27 15:09 ` sashiko-bot
2026-11-05 21:20 ` Alan Stern
2026-10-27 14:57 ` [PATCH 11/19] usb: typec: tcpm: don't wait for the VDM discovery work Greg Kroah-Hartman
2026-10-27 15:18 ` sashiko-bot
2026-11-06 12:49 ` Heikki Krogerus
2026-10-27 14:57 ` [PATCH 12/19] usb: typec: tcpci: don't act on unread alerts Greg Kroah-Hartman
2026-10-27 15:12 ` sashiko-bot
2026-11-02 22:23 ` Amit Sunil Dhamne
2026-10-27 14:57 ` [PATCH 13/19] usb: typec: anx7411: zero on-stack alt mode descriptors Greg Kroah-Hartman
2026-10-27 15:10 ` sashiko-bot
2026-10-28 16:20 ` Benson Leung
2026-11-06 12:51 ` Heikki Krogerus
2026-10-27 14:57 ` [PATCH 14/19] usb: typec: mux: it5205: fix oops on accessory modes Greg Kroah-Hartman
2026-10-27 15:13 ` sashiko-bot
2026-11-06 14:54 ` Heikki Krogerus [this message]
2026-10-27 14:57 ` [PATCH 15/19] usb: typec: mux: tusb1046: " Greg Kroah-Hartman
2026-10-27 15:13 ` sashiko-bot
2026-10-27 14:57 ` [PATCH 16/19] usb: renesas_usbhs: link URBs with interrupts disabled Greg Kroah-Hartman
2026-10-27 15:23 ` sashiko-bot
2026-10-27 14:57 ` [PATCH 17/19] usb: renesas_usbhs: unlink the URB if it is not queued Greg Kroah-Hartman
2026-10-27 15:27 ` sashiko-bot
2026-10-27 14:57 ` [PATCH 18/19] usb: isp1760: wait for the TT clear in endpoint_disable Greg Kroah-Hartman
2026-10-27 15:21 ` Rui Miguel Silva
2026-10-27 15:28 ` sashiko-bot
2026-10-27 14:57 ` [PATCH 19/19] usb: dwc2: " Greg Kroah-Hartman
2026-10-27 15:37 ` sashiko-bot
2026-11-02 9:04 ` [PATCH 00/19] USB: a bunch of llm-found fixes Romain Gantois
2026-11-02 9:07 ` Romain Gantois
2026-11-02 9:06 ` Romain Gantois
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=au3qDw094t54vE_a@black.igk.intel.com \
--to=heikki.krogerus@linux.intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=josef@toxicpanda.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=stable@kernel.org \
--cc=stern@rowland.harvard.edu \
/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.