drm/atomic-helpers: Properly avoid full modeset dance
Dan Carpenter
dan.carpenter at oracle.com
Fri Mar 27 07:33:00 PDT 2015
Hello Daniel Vetter,
This is a semi-automatic email about new static checker warnings.
The patch 76b58b03806b: "drm/atomic-helpers: Properly avoid full
modeset dance" from Mar 26, 2015, leads to the following Smatch
complaint:
drivers/gpu/drm/drm_atomic_helper.c:615 disable_outputs()
warn: variable dereferenced before check 'connector->state->crtc' (see line 591)
drivers/gpu/drm/drm_atomic_helper.c
590 if (!old_crtc_state->active ||
591 !needs_modeset(connector->state->crtc->state))
^^^^^^^^^^^^^^^^^^^^^^
Patch introduces a new dereference.
592 continue;
593
594 encoder = old_conn_state->best_encoder;
595
596 /* We shouldn't get this far if we didn't previously have
597 * an encoder.. but WARN_ON() rather than explode.
598 */
599 if (WARN_ON(!encoder))
600 continue;
601
602 funcs = encoder->helper_private;
603
604 DRM_DEBUG_ATOMIC("disabling [ENCODER:%d:%s]\n",
605 encoder->base.id, encoder->name);
606
607 /*
608 * Each encoder has at most one connector (since we always steal
609 * it away), so we won't call disable hooks twice.
610 */
611 if (encoder->bridge)
612 encoder->bridge->funcs->disable(encoder->bridge);
613
614 /* Right function depends upon target state. */
615 if (connector->state->crtc && funcs->prepare)
^^^^^^^^^^^^^^^^^^^^^^
Existing code checks for NULL.
616 funcs->prepare(encoder);
617 else if (funcs->disable)
regards,
dan carpenter
More information about the dri-devel
mailing list