Commit 789384eb authored by Abhinav Kumar's avatar Abhinav Kumar
Browse files

drm/msm/dpu: check dpu_plane_atomic_print_state() for valid sspp



Similar to the r_pipe sspp protect, add a check to protect
the pipe state prints to avoid NULL ptr dereference for cases when
the state is dumped without a corresponding atomic_check() where the
pipe->sspp is assigned.

Fixes: 31f7148f ("drm/msm/dpu: move pstate->pipe initialization to dpu_plane_atomic_check")
Reported-by: default avatarStephen Boyd <swboyd@chromium.org>
Closes: https://gitlab.freedesktop.org/drm/msm/-/issues/67


Reviewed-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Tested-by: default avatarDouglas Anderson <dianders@chromium.org>
Tested-by: Stephen Boyd <swboyd@chromium.org> # sc7180-trogdor
Patchwork: https://patchwork.freedesktop.org/patch/628404/
Link: https://lore.kernel.org/r/20241211-check-state-before-dump-v2-1-62647a501e8c@quicinc.com


Signed-off-by: default avatarAbhinav Kumar <quic_abhinavk@quicinc.com>
parent d9f55e2a
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -1335,12 +1335,15 @@ static void dpu_plane_atomic_print_state(struct drm_printer *p,

	drm_printf(p, "\tstage=%d\n", pstate->stage);

	if (pipe->sspp) {
		drm_printf(p, "\tsspp[0]=%s\n", pipe->sspp->cap->name);
	drm_printf(p, "\tmultirect_mode[0]=%s\n", dpu_get_multirect_mode(pipe->multirect_mode));
		drm_printf(p, "\tmultirect_mode[0]=%s\n",
			   dpu_get_multirect_mode(pipe->multirect_mode));
		drm_printf(p, "\tmultirect_index[0]=%s\n",
			   dpu_get_multirect_index(pipe->multirect_index));
		drm_printf(p, "\tsrc[0]=" DRM_RECT_FMT "\n", DRM_RECT_ARG(&pipe_cfg->src_rect));
		drm_printf(p, "\tdst[0]=" DRM_RECT_FMT "\n", DRM_RECT_ARG(&pipe_cfg->dst_rect));
	}

	if (r_pipe->sspp) {
		drm_printf(p, "\tsspp[1]=%s\n", r_pipe->sspp->cap->name);