diff options
author | Chenyuan Yang <chenyuan0y@gmail.com> | 2025-03-13 20:10:04 -0500 |
---|---|---|
committer | Abhinav Kumar <quic_abhinavk@quicinc.com> | 2025-04-10 13:21:44 -0700 |
commit | 5cb1b130e1cd04239cc9c26a98279f4660dce583 (patch) | |
tree | 1d6bc40aa1d4706dfb30e26d9558dcb379295d8b | |
parent | bcaa391e177c06a58c5f3cd18484a317d40239aa (diff) | |
download | linux-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.c | 3 |
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); |