On Fri, Mar 27, 2015 at 05:33:00PM +0300, Dan Carpenter wrote: > 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) Thierry was a notch faster with reporting this on irc, already fixed. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel