From: sashiko-bot@kernel.org
To: "Sebastian Reichel" <sebastian.reichel@collabora.com>
Cc: neil.armstrong@linaro.org, linux-phy@lists.infradead.org,
vkoul@kernel.org, olteanv@gmail.com, conor+dt@kernel.org,
robh@kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v14 32/38] usb: dwc3: rockchip: fix USB-C reconnect in gadget mode
Date: Fri, 14 Aug 2026 05:59:26 +0000 [thread overview]
Message-ID: <20260814055926.C847E1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260813-rockchip-usbdp-cleanup-v14-32-b5ad9c68fa11@collabora.com>
Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
New issues:
- [High] Checking !dwc->gadget_driver in dwc3_rockchip_vbus_handler breaks the UDC core's VBUS state tracking, defeating the patch's intended PM resume logic.
- [High] TOCTOU race in dwc3_rockchip_vbus_handler leading to Use-After-Free of gadget and UDC structures.
Pre-existing issues:
- [High] Using asynchronous pm_runtime_put_autosuspend() in the device removal path introduces race conditions.
- [High] Mishandling of -EINVAL from pm_runtime_get_if_active() causes PM usage count underflow and unsafe MMIO access without clocks.
--
--- Patch [32]: [PATCH v14 32/38] usb: dwc3: rockchip: fix USB-C reconnect in gadget mode ---
commit 9dbfd69b985e240b0787670a034f6b9c37a180d0
Author: Sebastian Reichel <sebastian.reichel@collabora.com>
usb: dwc3: rockchip: fix USB-C reconnect in gadget mode
When USB-C is configured in gadget mode and the cable is unplugged the
USB controller is suspended. This patch triggers a runtime PM resume
when the role is changed to fix an issue where the controller stays
suspended and the port status remains not-attached after reconnecting.
> diff --git a/drivers/usb/dwc3/dwc3-rockchip.c b/drivers/usb/dwc3/dwc3-rockchip.c
> index 9e91e5f7e53d6..246d7dcafc68f 100644
> --- a/drivers/usb/dwc3/dwc3-rockchip.c
> +++ b/drivers/usb/dwc3/dwc3-rockchip.c
> @@ -25,8 +25,17 @@ struct dwc3_rockchip {
> struct dwc3 dwc;
> struct dwc3_rk_phy_nb usb3_phy_nb[DWC3_USB3_MAX_PORTS];
> u8 phy_reset_active;
> + enum usb_role role;
> };
>
> +static void dwc3_rockchip_vbus_handler(struct dwc3 *dwc, bool present)
> +{
> + if (!dwc->gadget || !dwc->gadget_driver)
> + return;
[Severity: High]
Does this early return break the UDC core's VBUS state tracking when a gadget
driver is not yet bound?
If the system boots with the cable unplugged and no gadget driver is loaded,
this returns early and drops the unplug event. The UDC core's udc->vbus would
remain true.
When the gadget driver is later loaded, this true state would cause a
premature pullup that wakes the device but then lets it autosuspend. When the
cable is actually plugged in later, the UDC core might see the state hasn't
changed and skip the pullup, meaning the device never receives the PM resume
needed to detect the connection.
[Severity: High]
Can this lead to a use-after-free of the gadget and UDC structures?
This function is called locklessly from the asynchronous PHY notifier
dwc3_usb3_phy_notify(). If a concurrent role switch occurs (like DEVICE to
HOST), dwc3_gadget_exit() could be freeing the gadget structure under
dwc->mutex:
dwc3_rockchip_vbus_handler()
if (!dwc->gadget || !dwc->gadget_driver)
Concurrent dwc3_gadget_exit()
usb_put_gadget() -> kfree(gadget)
Would this result in the notifier dereferencing a freed gadget pointer when
it calls usb_udc_vbus_handler() below?
> +
> + usb_udc_vbus_handler(dwc->gadget, present);
> +}
> +
[ ... ]
> @@ -57,6 +66,8 @@ static int dwc3_usb3_phy_notify(struct notifier_block *nb,
> if (!ret)
> return NOTIFY_OK;
[Severity: High]
This is a pre-existing issue, but does this check properly handle the
-EINVAL return from pm_runtime_get_if_active()?
pm_runtime_get_if_active() returns -EINVAL when runtime PM is disabled.
By checking if (!ret), the -EINVAL case falls through and allows the code
to proceed. This can cause unsafe MMIO access without clocks.
Additionally, in the PHY_NOTIFY_POST_RESET case, pm_runtime_put_autosuspend()
is called unconditionally:
dwc3_usb3_phy_notify() {
...
case PHY_NOTIFY_POST_RESET:
...
pm_runtime_put_autosuspend(dwc->dev);
break;
}
Since pm_runtime_put_autosuspend() calls rpm_drop_usage_count(), this would
decrement the usage count and cause an underflow if the corresponding get
failed with -EINVAL.
> + dwc3_rockchip_vbus_handler(dwc, false);
> +
> /*
> * Assert USB3 PHY soft reset within DWC3 before the external
[ ... ]
> @@ -130,7 +144,16 @@ static int dwc3_rk_phy_register_notifiers(struct dwc3 *dwc)
> return devm_add_action_or_reset(dwc->dev, dwc3_rk_phy_unregister_notifiers, dwc_rk);
> }
[Severity: High]
This isn't a bug introduced by this patch, but does the cleanup function
dwc3_rk_phy_unregister_notifiers() safely handle device removal?
The cleanup function executes during devres teardown:
dwc3_rk_phy_unregister_notifiers() {
...
for (i = 0; i < dwc->num_usb3_ports; i++) {
if (dwc_rk->phy_reset_active & BIT(i))
pm_runtime_put_autosuspend(dwc->dev);
}
}
Since this runs during device removal, the asynchronous suspend could fire
after device memory is freed or during bus teardown. Should this use
pm_runtime_put_sync() instead to ensure hardware is in the correct state
before removal completes?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260813-rockchip-usbdp-cleanup-v14-0-b5ad9c68fa11@collabora.com?part=32
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
WARNING: multiple messages have this Message-ID (diff)
From: sashiko-bot@kernel.org
To: "Sebastian Reichel" <sebastian.reichel@collabora.com>
Cc: neil.armstrong@linaro.org, linux-phy@lists.infradead.org,
vkoul@kernel.org, olteanv@gmail.com, conor+dt@kernel.org,
robh@kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v14 32/38] usb: dwc3: rockchip: fix USB-C reconnect in gadget mode
Date: Fri, 14 Aug 2026 05:59:26 +0000 [thread overview]
Message-ID: <20260814055926.C847E1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260813-rockchip-usbdp-cleanup-v14-32-b5ad9c68fa11@collabora.com>
Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
New issues:
- [High] Checking !dwc->gadget_driver in dwc3_rockchip_vbus_handler breaks the UDC core's VBUS state tracking, defeating the patch's intended PM resume logic.
- [High] TOCTOU race in dwc3_rockchip_vbus_handler leading to Use-After-Free of gadget and UDC structures.
Pre-existing issues:
- [High] Using asynchronous pm_runtime_put_autosuspend() in the device removal path introduces race conditions.
- [High] Mishandling of -EINVAL from pm_runtime_get_if_active() causes PM usage count underflow and unsafe MMIO access without clocks.
--
--- Patch [32]: [PATCH v14 32/38] usb: dwc3: rockchip: fix USB-C reconnect in gadget mode ---
commit 9dbfd69b985e240b0787670a034f6b9c37a180d0
Author: Sebastian Reichel <sebastian.reichel@collabora.com>
usb: dwc3: rockchip: fix USB-C reconnect in gadget mode
When USB-C is configured in gadget mode and the cable is unplugged the
USB controller is suspended. This patch triggers a runtime PM resume
when the role is changed to fix an issue where the controller stays
suspended and the port status remains not-attached after reconnecting.
> diff --git a/drivers/usb/dwc3/dwc3-rockchip.c b/drivers/usb/dwc3/dwc3-rockchip.c
> index 9e91e5f7e53d6..246d7dcafc68f 100644
> --- a/drivers/usb/dwc3/dwc3-rockchip.c
> +++ b/drivers/usb/dwc3/dwc3-rockchip.c
> @@ -25,8 +25,17 @@ struct dwc3_rockchip {
> struct dwc3 dwc;
> struct dwc3_rk_phy_nb usb3_phy_nb[DWC3_USB3_MAX_PORTS];
> u8 phy_reset_active;
> + enum usb_role role;
> };
>
> +static void dwc3_rockchip_vbus_handler(struct dwc3 *dwc, bool present)
> +{
> + if (!dwc->gadget || !dwc->gadget_driver)
> + return;
[Severity: High]
Does this early return break the UDC core's VBUS state tracking when a gadget
driver is not yet bound?
If the system boots with the cable unplugged and no gadget driver is loaded,
this returns early and drops the unplug event. The UDC core's udc->vbus would
remain true.
When the gadget driver is later loaded, this true state would cause a
premature pullup that wakes the device but then lets it autosuspend. When the
cable is actually plugged in later, the UDC core might see the state hasn't
changed and skip the pullup, meaning the device never receives the PM resume
needed to detect the connection.
[Severity: High]
Can this lead to a use-after-free of the gadget and UDC structures?
This function is called locklessly from the asynchronous PHY notifier
dwc3_usb3_phy_notify(). If a concurrent role switch occurs (like DEVICE to
HOST), dwc3_gadget_exit() could be freeing the gadget structure under
dwc->mutex:
dwc3_rockchip_vbus_handler()
if (!dwc->gadget || !dwc->gadget_driver)
Concurrent dwc3_gadget_exit()
usb_put_gadget() -> kfree(gadget)
Would this result in the notifier dereferencing a freed gadget pointer when
it calls usb_udc_vbus_handler() below?
> +
> + usb_udc_vbus_handler(dwc->gadget, present);
> +}
> +
[ ... ]
> @@ -57,6 +66,8 @@ static int dwc3_usb3_phy_notify(struct notifier_block *nb,
> if (!ret)
> return NOTIFY_OK;
[Severity: High]
This is a pre-existing issue, but does this check properly handle the
-EINVAL return from pm_runtime_get_if_active()?
pm_runtime_get_if_active() returns -EINVAL when runtime PM is disabled.
By checking if (!ret), the -EINVAL case falls through and allows the code
to proceed. This can cause unsafe MMIO access without clocks.
Additionally, in the PHY_NOTIFY_POST_RESET case, pm_runtime_put_autosuspend()
is called unconditionally:
dwc3_usb3_phy_notify() {
...
case PHY_NOTIFY_POST_RESET:
...
pm_runtime_put_autosuspend(dwc->dev);
break;
}
Since pm_runtime_put_autosuspend() calls rpm_drop_usage_count(), this would
decrement the usage count and cause an underflow if the corresponding get
failed with -EINVAL.
> + dwc3_rockchip_vbus_handler(dwc, false);
> +
> /*
> * Assert USB3 PHY soft reset within DWC3 before the external
[ ... ]
> @@ -130,7 +144,16 @@ static int dwc3_rk_phy_register_notifiers(struct dwc3 *dwc)
> return devm_add_action_or_reset(dwc->dev, dwc3_rk_phy_unregister_notifiers, dwc_rk);
> }
[Severity: High]
This isn't a bug introduced by this patch, but does the cleanup function
dwc3_rk_phy_unregister_notifiers() safely handle device removal?
The cleanup function executes during devres teardown:
dwc3_rk_phy_unregister_notifiers() {
...
for (i = 0; i < dwc->num_usb3_ports; i++) {
if (dwc_rk->phy_reset_active & BIT(i))
pm_runtime_put_autosuspend(dwc->dev);
}
}
Since this runs during device removal, the asynchronous suspend could fire
after device memory is freed or during bus teardown. Should this use
pm_runtime_put_sync() instead to ensure hardware is in the correct state
before removal completes?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260813-rockchip-usbdp-cleanup-v14-0-b5ad9c68fa11@collabora.com?part=32
next prev parent reply other threads:[~2026-08-14 5:59 UTC|newest]
Thread overview: 155+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-13 20:51 [PATCH v14 00/38] phy: rockchip: usbdp: Clean up the mess Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` [PATCH v14 01/38] dt-bindings: phy: rockchip-usbdp: add improved ports scheme Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` [PATCH v14 02/38] phy: rockchip: usbdp: Update mode_change after error handling Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-14 1:19 ` sashiko-bot
2026-08-14 1:19 ` sashiko-bot
2026-08-13 20:51 ` [PATCH v14 03/38] phy: rockchip: usbdp: Do not lose USB3 PHY status Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-14 1:33 ` sashiko-bot
2026-08-14 1:33 ` sashiko-bot
2026-08-13 20:51 ` [PATCH v14 04/38] phy: rockchip: usbdp: Fix devm_clk_bulk_get_all check Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-14 1:41 ` sashiko-bot
2026-08-14 1:41 ` sashiko-bot
2026-08-13 20:51 ` [PATCH v14 05/38] phy: rockchip: usbdp: Handle missing clock-names DT property gracefully Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-14 1:53 ` sashiko-bot
2026-08-14 1:53 ` sashiko-bot
2026-08-13 20:51 ` [PATCH v14 06/38] phy: rockchip: usbdp: Drop seamless DP takeover Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-14 2:06 ` sashiko-bot
2026-08-14 2:06 ` sashiko-bot
2026-08-13 20:51 ` [PATCH v14 07/38] phy: rockchip: usbdp: Keep clocks running on PHY re-init Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-14 2:16 ` sashiko-bot
2026-08-14 2:16 ` sashiko-bot
2026-08-13 20:51 ` [PATCH v14 08/38] phy: rockchip: usbdp: Amend SSC modulation deviation Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` [PATCH v14 09/38] phy: rockchip: usbdp: Fix LFPS detect threshold control Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` [PATCH v14 10/38] phy: rockchip: usbdp: Add missing mode_change update Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-14 2:41 ` sashiko-bot
2026-08-14 2:41 ` sashiko-bot
2026-08-13 20:51 ` [PATCH v14 11/38] phy: rockchip: usbdp: Support single-lane DP Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-14 2:55 ` sashiko-bot
2026-08-14 2:55 ` sashiko-bot
2026-08-13 20:51 ` [PATCH v14 12/38] phy: rockchip: usbdp: Limit DP lane count to muxed lanes Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-14 3:07 ` sashiko-bot
2026-08-14 3:07 ` sashiko-bot
2026-08-13 20:51 ` [PATCH v14 13/38] phy: rockchip: usbdp: Rename DP lane functions Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` [PATCH v14 14/38] phy: rockchip: usbdp: Use FIELD_PREP_WM16_CONST Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` [PATCH v14 15/38] phy: rockchip: usbdp: Cleanup DP lane selection function Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` [PATCH v14 16/38] phy: rockchip: usbdp: Register DP aux bridge Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:51 ` Sebastian Reichel
2026-08-13 20:52 ` [PATCH v14 17/38] phy: rockchip: usbdp: Drop DP HPD handling Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` [PATCH v14 18/38] phy: rockchip: usbdp: Rename mode_change to phy_needs_reinit Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` [PATCH v14 19/38] phy: rockchip: usbdp: Re-init the PHY on orientation change Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-14 3:57 ` sashiko-bot
2026-08-14 3:57 ` sashiko-bot
2026-08-13 20:52 ` [PATCH v14 20/38] phy: rockchip: usbdp: Factor out lane_mux_sel setup Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-14 4:10 ` sashiko-bot
2026-08-14 4:10 ` sashiko-bot
2026-08-13 20:52 ` [PATCH v14 21/38] phy: rockchip: usbdp: Properly handle TYPEC_STATE_SAFE and TYPEC_STATE_USB Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-14 4:23 ` sashiko-bot
2026-08-14 4:23 ` sashiko-bot
2026-08-13 20:52 ` [PATCH v14 22/38] phy: rockchip: usbdp: Use guard functions for mutex Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` [PATCH v14 23/38] phy: rockchip: usbdp: Hold mutex in DP PHY configure Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` [PATCH v14 24/38] phy: rockchip: usbdp: Add some extra debug messages Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` [PATCH v14 25/38] phy: rockchip: usbdp: Avoid xHCI SErrors Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-14 4:52 ` sashiko-bot
2026-08-14 4:52 ` sashiko-bot
2026-08-13 20:52 ` [PATCH v14 26/38] phy: rockchip: usbdp: Handle rk_udphy_reset_deassert errors Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` [PATCH v14 27/38] phy: rockchip: usbdp: Only enable USB3 when not in high-speed mode Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` [PATCH v14 28/38] phy: core: add notifier infrastructure Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-14 5:14 ` sashiko-bot
2026-08-14 5:14 ` sashiko-bot
2026-08-13 20:52 ` [PATCH v14 29/38] usb: dwc3: rockchip: introduce glue driver Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-14 5:22 ` sashiko-bot
2026-08-14 5:22 ` sashiko-bot
2026-08-13 20:52 ` [PATCH v14 30/38] usb: dwc3: core: add post PHY registration hook for platform glue Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` [PATCH v14 31/38] usb: dwc3: rockchip: support PHY reset notifications Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-14 5:43 ` sashiko-bot
2026-08-14 5:43 ` sashiko-bot
2026-08-13 20:52 ` [PATCH v14 32/38] usb: dwc3: rockchip: fix USB-C reconnect in gadget mode Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-14 5:59 ` sashiko-bot [this message]
2026-08-14 5:59 ` sashiko-bot
2026-08-13 20:52 ` [PATCH v14 33/38] phy: rockchip: usbdp: Add phy reset notification support Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-14 6:12 ` sashiko-bot
2026-08-14 6:12 ` sashiko-bot
2026-08-13 20:52 ` [PATCH v14 34/38] phy: rockchip: usbdp: Drop -EPROBE_DEFER hack Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` [PATCH v14 35/38] phy: rockchip: usbdp: Rename mode to hw_mode Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` [PATCH v14 36/38] phy: rockchip: usbdp: Fix power state handling Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` [PATCH v14 37/38] phy: rockchip: usbdp: Re-init PHY on mux change Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-14 6:49 ` sashiko-bot
2026-08-14 6:49 ` sashiko-bot
2026-08-13 20:52 ` [PATCH v14 38/38] phy: rockchip: usbdp: Add USB-C state without DP enabled Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
2026-08-13 20:52 ` Sebastian Reichel
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=20260814055926.C847E1F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=linux-phy@lists.infradead.org \
--cc=neil.armstrong@linaro.org \
--cc=olteanv@gmail.com \
--cc=robh@kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=sebastian.reichel@collabora.com \
--cc=vkoul@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 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.