lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 9 Aug 2022 13:44:50 -0700 From: Kuogee Hsieh <quic_khsieh@...cinc.com> To: <robdclark@...il.com>, <sean@...rly.run>, <swboyd@...omium.org>, <dianders@...omium.org>, <vkoul@...nel.org>, <daniel@...ll.ch>, <airlied@...ux.ie>, <agross@...nel.org>, <dmitry.baryshkov@...aro.org>, <bjorn.andersson@...aro.org> CC: <quic_abhinavk@...cinc.com>, <quic_aravindh@...cinc.com>, <quic_khsieh@...cinc.com>, <quic_sbillaka@...cinc.com>, <freedreno@...ts.freedesktop.org>, <dri-devel@...ts.freedesktop.org>, <linux-arm-msm@...r.kernel.org>, <linux-kernel@...r.kernel.org> Subject: [PATCH] drm/msm/dp: check hpd_state before push idle pattern at dp_bridge_disable() dp_bridge_disable() is the first step toward tearing down main link. Its major function is to start transmitting idle pattern to replace video stream. This patch will check hpd_state to make sure main link is enabled before commit changes of main link's configuration to push idle pattern out to avoid system crashing due to main link clock is disabled while access main link registers. Fixes: 13ea4799a81b ("drm/msm/dp: remove extra wrappers and public functions"); Signed-off-by: Kuogee Hsieh <quic_khsieh@...cinc.com> Reported-by: Leonard Lausen @leezu --- drivers/gpu/drm/msm/dp/dp_display.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c index b36f8b6..678289a 100644 --- a/drivers/gpu/drm/msm/dp/dp_display.c +++ b/drivers/gpu/drm/msm/dp/dp_display.c @@ -1729,10 +1729,20 @@ void dp_bridge_disable(struct drm_bridge *drm_bridge) struct msm_dp_bridge *dp_bridge = to_dp_bridge(drm_bridge); struct msm_dp *dp = dp_bridge->dp_display; struct dp_display_private *dp_display; + u32 state; dp_display = container_of(dp, struct dp_display_private, dp_display); + mutex_lock(&dp_display->event_mutex); + + state = dp_display->hpd_state; + if (state != ST_DISCONNECT_PENDING && state != ST_CONNECTED) { + mutex_unlock(&dp_display->event_mutex); + return; + } + dp_ctrl_push_idle(dp_display->ctrl); + mutex_unlock(&dp_display->event_mutex); } void dp_bridge_post_disable(struct drm_bridge *drm_bridge) -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project
Powered by blists - more mailing lists