From: sashiko-bot@kernel.org
To: "Yongxing Mou" <yongxing.mou@oss.qualcomm.com>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v9 12/14] drm/msm/dp: simplify link and clock disable sequence
Date: Tue, 28 Jul 2026 10:41:25 +0000 [thread overview]
Message-ID: <20260728104125.C12AD1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260728-dp_mstclean-v9-12-f7779fce10f4@oss.qualcomm.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] Time-Of-Check to Time-Of-Use (TOCTOU) race condition on `dp->link->sink_count` leading to mismatched hardware state.
--
--- Patch [12]: [PATCH v9 12/14] drm/msm/dp: simplify link and clock disable sequence ---
commit 68b08e6a0d7bd864688b398d6052cc9412efcc7c
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.
> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
> index 6e392a99438f8..9b9e96b683c71 100644
> --- a/drivers/gpu/drm/msm/dp/dp_display.c
> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
[ ... ]
> + /* 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 this introduce a race condition if sink_count changes between these two
checks?
Looking at msm_dp_display_disable(), the sink_count is now evaluated twice.
If a user plugs or unplugs a monitor exactly when this disable sequence
is occurring, the HPD event thread might locklessly update sink_count:
CPU1 (msm_dp_display_disable)
if (dp->link->sink_count == 0) // evaluates to true
msm_dp_link_psm_config(...);
CPU2 (HPD IRQ thread)
msm_dp_link_process_request()
dp->link->sink_count = 1; // updated locklessly
CPU1
msm_dp_ctrl_off_link(...);
if (dp->link->sink_count == 0) // now evaluates to false
else
msm_dp_display_host_phy_exit(dp);
If this state diverges, the driver might completely disable the PHY while
a dongle is still connected and in PSM mode, preventing the hardware from
detecting subsequent dongle disconnects.
Would it be safer to cache the initial sink_count in a local variable to
ensure consistent state transitions throughout the function?
> + /* 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);
> - }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260728-dp_mstclean-v9-0-f7779fce10f4@oss.qualcomm.com?part=12
next prev parent reply other threads:[~2026-07-28 10:41 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-28 10:21 [PATCH v9 00/14] drm/msm/dp: Prerequisite cleanup for upcoming MST support Yongxing Mou
2026-07-28 10:21 ` [PATCH v9 01/14] drm/msm/dp: remove cached drm_edid from panel Yongxing Mou
2026-07-28 10:37 ` sashiko-bot
2026-07-28 10:21 ` [PATCH v9 02/14] drm/msm/dp: drop deprecated .mode_set() and use .atomic_pre_enable Yongxing Mou
2026-07-28 10:34 ` sashiko-bot
2026-07-28 10:21 ` [PATCH v9 03/14] drm/msm/dp: move mode setup into msm_dp_panel_init_panel_info() Yongxing Mou
2026-07-28 10:21 ` [PATCH v9 04/14] drm/msm/dp: split msm_dp_ctrl_config_ctrl() into link parts and stream parts Yongxing Mou
2026-07-28 10:21 ` [PATCH v9 05/14] drm/msm/dp: extract MISC1_MISC0 configuration into a separate function Yongxing Mou
2026-07-28 10:21 ` [PATCH v9 06/14] drm/msm/dp: split link setup from source params Yongxing Mou
2026-07-28 10:21 ` [PATCH v9 07/14] drm/msm/dp: move the pixel clock control to its own API Yongxing Mou
2026-07-28 10:35 ` sashiko-bot
2026-07-28 10:21 ` [PATCH v9 08/14] drm/msm/dp: break up dp_display_enable into two parts Yongxing Mou
2026-07-28 10:34 ` sashiko-bot
2026-07-28 10:21 ` [PATCH v9 09/14] drm/msm/dp: re-arrange dp_display_disable() into functional parts Yongxing Mou
2026-07-28 10:39 ` sashiko-bot
2026-07-28 10:21 ` [PATCH v9 10/14] drm/msm/dp: allow dp_ctrl stream APIs to use any panel passed to it Yongxing Mou
2026-07-28 10:21 ` [PATCH v9 11/14] drm/msm/dp: split dp_ctrl_off() into stream and link parts Yongxing Mou
2026-07-28 10:21 ` [PATCH v9 12/14] drm/msm/dp: simplify link and clock disable sequence Yongxing Mou
2026-07-28 10:41 ` sashiko-bot [this message]
2026-07-28 10:21 ` [PATCH v9 13/14] drm/msm/dp: make bridge helpers use dp_display to allow re-use Yongxing Mou
2026-07-28 10:38 ` sashiko-bot
2026-07-28 10:21 ` [PATCH v9 14/14] 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=20260728104125.C12AD1F000E9@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.