summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChenyuan Yang <chenyuan0y@gmail.com>2025-03-13 20:10:04 -0500
committerAbhinav Kumar <quic_abhinavk@quicinc.com>2025-04-10 13:21:44 -0700
commit5cb1b130e1cd04239cc9c26a98279f4660dce583 (patch)
tree1d6bc40aa1d4706dfb30e26d9558dcb379295d8b
parentbcaa391e177c06a58c5f3cd18484a317d40239aa (diff)
downloadlinux-stable-5cb1b130e1cd04239cc9c26a98279f4660dce583.tar.gz
linux-stable-5cb1b130e1cd04239cc9c26a98279f4660dce583.tar.bz2
linux-stable-5cb1b130e1cd04239cc9c26a98279f4660dce583.zip
drm/msm/dpu: Fix error pointers in dpu_plane_virtual_atomic_check
The function dpu_plane_virtual_atomic_check was dereferencing pointers returned by drm_atomic_get_plane_state without checking for errors. This could lead to undefined behavior if the function returns an error pointer. This commit adds checks using IS_ERR to ensure that plane_state is valid before dereferencing them. Similar to commit da29abe71e16 ("drm/amd/display: Fix error pointers in amdgpu_dm_crtc_mem_type_changed"). Fixes: 774bcfb73176 ("drm/msm/dpu: add support for virtual planes") Signed-off-by: Chenyuan Yang <chenyuan0y@gmail.com> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com> Patchwork: https://patchwork.freedesktop.org/patch/643132/ Link: https://lore.kernel.org/r/20250314011004.663804-1-chenyuan0y@gmail.com Signed-off-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
-rw-r--r--drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
index aeb90c287245..e03d6091f736 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c
@@ -1060,6 +1060,9 @@ static int dpu_plane_virtual_atomic_check(struct drm_plane *plane,
struct drm_crtc_state *crtc_state;
int ret;
+ if (IS_ERR(plane_state))
+ return PTR_ERR(plane_state);
+
if (plane_state->crtc)
crtc_state = drm_atomic_get_new_crtc_state(state,
plane_state->crtc);