[bug report] drm: Use the state pointer directly in planes atomic_check

Dan Carpenter dan.carpenter at linaro.org
Mon May 15 06:15:54 UTC 2023


Hello Maxime Ripard,

This is a semi-automatic email about new static checker warnings.

The patch dec92020671c: "drm: Use the state pointer directly in 
planes atomic_check" from Feb 19, 2021, leads to the following Smatch 
complaint:

    drivers/gpu/drm/armada/armada_plane.c:97 armada_drm_plane_atomic_check()
    warn: variable dereferenced before check 'state' (see line 84)

drivers/gpu/drm/armada/armada_plane.c
    81  int armada_drm_plane_atomic_check(struct drm_plane *plane,
    82          struct drm_atomic_state *state)
    83  {
    84          struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
                                                                                         ^^^^^
state is deferenced here.

    85                                                                                   plane);
    86          struct armada_plane_state *st = to_armada_plane_state(new_plane_state);
    87          struct drm_crtc *crtc = new_plane_state->crtc;
    88          struct drm_crtc_state *crtc_state;
    89          bool interlace;
    90          int ret;
    91  
    92          if (!new_plane_state->fb || WARN_ON(!new_plane_state->crtc)) {
    93                  new_plane_state->visible = false;
    94                  return 0;
    95          }
    96  
    97          if (state)

This used to check "if (new_plane_state->state)".  If state is NULL then
we will already have crashed.

    98                  crtc_state = drm_atomic_get_existing_crtc_state(state,
    99                                                                  crtc);
   100          else
   101                  crtc_state = crtc->state;
   102  
   103          ret = drm_atomic_helper_check_plane_state(new_plane_state, crtc_state,
   104                                                    0,
   105                                                    INT_MAX, true, false);

regards,
dan carpenter


More information about the dri-devel mailing list