Message ID | 20240806092249.2407555-1-make24@iscas.ac.cn (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915: Fix NULL ptr deref in intel_async_flip_check_uapi() | expand |
Hi Ma, > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > index c2c388212e2e..9dd7b5985d57 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -6115,7 +6115,7 @@ static int intel_async_flip_check_uapi(struct intel_atomic_state *state, > return -EINVAL; > } > > - if (intel_crtc_needs_modeset(new_crtc_state)) { > + if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state)) { new_crtc_state is used also earlier. If it was NULL you wouldn't have reached this state. Have you experienced a null pointer dereference or is it some code analyzer that reported this? Can you explain how intel_atomic_get_new_crtc_state() can return NULL? For now this is nacked. Thanks, Andi
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index c2c388212e2e..9dd7b5985d57 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -6115,7 +6115,7 @@ static int intel_async_flip_check_uapi(struct intel_atomic_state *state, return -EINVAL; } - if (intel_crtc_needs_modeset(new_crtc_state)) { + if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state)) { drm_dbg_kms(&i915->drm, "[CRTC:%d:%s] modeset required\n", crtc->base.base.id, crtc->base.name);
intel_atomic_get_new_crtc_state can return NULL, unless crtc state wasn't obtained previously with intel_atomic_get_crtc_state. We should check it for NULLness here, just as in many other places, where we can't guarantee that intel_atomic_get_crtc_state was called. Cc: stable@vger.kernel.org Fixes: b0b2bed2a130 ("drm/i915: Check async flip capability early on") Signed-off-by: Ma Ke <make24@iscas.ac.cn> --- drivers/gpu/drm/i915/display/intel_display.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)