All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Yongxing Mou" <yongxing.mou@oss.qualcomm.com>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v8 12/15] drm/msm/dp: simplify link and clock disable sequence
Date: Mon, 20 Jul 2026 06:28:04 +0000	[thread overview]
Message-ID: <20260720062804.DE1081F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260720-dp_mstclean-v8-12-bea261bf4e7d@oss.qualcomm.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] The refactored code introduces a Time-of-Check to Time-of-Use (TOCTOU) race condition by evaluating `dp->link->sink_count == 0` twice.
--

--- Patch [12]: [PATCH v8 12/15] drm/msm/dp: simplify link and clock disable sequence ---
commit 84b41be14edf75da081c987f79e9f547234b2511
Author: Yongxing Mou <yongxing.mou@oss.qualcomm.com>

drm/msm/dp: simplify link and clock disable sequence

This commit moves common disable steps out of the sink_count check to
make the flow easier to follow. No functional change is intended.

> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
> index 1ecd700a474fe..d1a3a6f6c303d 100644
> --- a/drivers/gpu/drm/msm/dp/dp_display.c
> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
> @@ -718,27 +718,19 @@ static int msm_dp_display_disable(struct msm_dp_display_private *dp)
>  
>  	msm_dp_panel_disable_vsc_sdp(dp->panel);
>  
> -	/* dongle is still connected but sinks are disconnected */
> -	if (dp->link->sink_count == 0) {
> -		/*
> -		 * irq_hpd with sink_count = 0
> -		 * hdmi unplugged out of dongle
> -		 */
> +	msm_dp_ctrl_off_pixel_clk(dp->ctrl);
>  
> -		/* set dongle to D3 (power off) mode */
> +	/* dongle is still connected but sinks are disconnected */
> +	if (dp->link->sink_count == 0)
>  		msm_dp_link_psm_config(dp->link, &dp->panel->link_info, true);
> -		msm_dp_ctrl_off_pixel_clk(dp->ctrl);
> -		msm_dp_ctrl_off_link(dp->ctrl, dp->panel);
> +
> +	msm_dp_ctrl_off_link(dp->ctrl, dp->panel);
> +
> +	if (dp->link->sink_count == 0)

[Severity: High]
Can checking dp->link->sink_count twice in this function introduce a race
condition?

If a hotplug or unplug event occurs exactly between these two checks, the
IRQ thread could dynamically update dp->link->sink_count via
msm_dp_irq_hpd_handle() -> msm_dp_link_process_request() while
msm_dp_display_disable() is executing.

Since there are no locks serializing the IRQ thread update against this
atomic disable sequence, could this result in an inconsistent hardware state?

For example, the dongle might be put into D3 power-off mode during the first
check, but if sink_count changes before the second check, the host PHY
might be exited instead of re-initialized.

The original code evaluated sink_count once and used an if/else block,
which guaranteed a mutually exclusive and consistent teardown sequence.
Would it be safer to cache the value of sink_count in a local variable
prior to the first check and use that local variable for both conditions?

> +		/* re-init the PHY so that we can listen to Dongle disconnect */
>  		msm_dp_ctrl_reinit_phy(dp->ctrl);
> -	} else {
> -		/*
> -		 * unplugged interrupt
> -		 * dongle unplugged out of DUT
> -		 */
> -		msm_dp_ctrl_off_pixel_clk(dp->ctrl);
> -		msm_dp_ctrl_off_link(dp->ctrl, dp->panel);
> +	else
>  		msm_dp_display_host_phy_exit(dp);
> -	}
>  
>  	msm_dp_display->power_on = false;
>

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260720-dp_mstclean-v8-0-bea261bf4e7d@oss.qualcomm.com?part=12

  reply	other threads:[~2026-07-20  6:28 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-20  6:08 [PATCH v8 00/15] drm/msm/dp: Prerequisite cleanup for upcoming MST support Yongxing Mou
2026-07-20  6:08 ` [PATCH v8 01/15] drm/msm/dp: remove cached drm_edid from panel Yongxing Mou
2026-07-20  6:08 ` [PATCH v8 02/15] drm/msm/dp: drop deprecated .mode_set() and use .atomic_enable Yongxing Mou
2026-07-20  6:33   ` sashiko-bot
2026-07-20  6:08 ` [PATCH v8 03/15] drm/msm/dp: move mode setup into msm_dp_panel_init_panel_info() Yongxing Mou
2026-07-20  6:08 ` [PATCH v8 04/15] drm/msm/dp: split msm_dp_ctrl_config_ctrl() into link parts and stream parts Yongxing Mou
2026-07-20  6:08 ` [PATCH v8 05/15] drm/msm/dp: extract MISC1_MISC0 configuration into a separate function Yongxing Mou
2026-07-20  6:08 ` [PATCH v8 06/15] drm/msm/dp: split link setup from source params Yongxing Mou
2026-07-20  6:27   ` sashiko-bot
2026-07-20  6:08 ` [PATCH v8 07/15] drm/msm/dp: move the pixel clock control to its own API Yongxing Mou
2026-07-20  6:26   ` sashiko-bot
2026-07-20  6:08 ` [PATCH v8 08/15] drm/msm/dp: break up dp_display_enable into two parts Yongxing Mou
2026-07-20  6:08 ` [PATCH v8 09/15] drm/msm/dp: re-arrange dp_display_disable() into functional parts Yongxing Mou
2026-07-20  6:08 ` [PATCH v8 10/15] drm/msm/dp: allow dp_ctrl stream APIs to use any panel passed to it Yongxing Mou
2026-07-20  6:24   ` sashiko-bot
2026-07-20  6:08 ` [PATCH v8 11/15] drm/msm/dp: split dp_ctrl_off() into stream and link parts Yongxing Mou
2026-07-20  6:26   ` sashiko-bot
2026-07-20  6:08 ` [PATCH v8 12/15] drm/msm/dp: simplify link and clock disable sequence Yongxing Mou
2026-07-20  6:28   ` sashiko-bot [this message]
2026-07-20  6:08 ` [PATCH v8 13/15] drm/msm/dp: make bridge helpers use dp_display to allow re-use Yongxing Mou
2026-07-20  6:27   ` sashiko-bot
2026-07-20  6:08 ` [PATCH v8 14/15] drm/msm/dp: separate dp_display_prepare() into its own API Yongxing Mou
2026-07-20  6:27   ` sashiko-bot
2026-07-20  6:08 ` [PATCH v8 15/15] drm/msm/dp: pass panel to display enable/disable helpers Yongxing Mou

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=20260720062804.DE1081F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=yongxing.mou@oss.qualcomm.com \
    /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.