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

Reply via email to