[bug report] drm/amd/display: If one stream full updates, full update all planes

Dan Carpenter dan.carpenter at oracle.com
Tue Apr 23 14:10:56 UTC 2019


Hello David Francis,

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

The patch c238bfe0be9e: "drm/amd/display: If one stream full updates,
full update all planes" from Mar 29, 2019, leads to the following
Smatch complaint:

    drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc.c:1492 det_surface_update()
    warn: variable dereferenced before check 'u->surface' (see line 1467)

drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc.c
  1466	
  1467		if (u->surface->force_full_update) {
                    ^^^^^^^^^^^^
The patch adds a new dereference

  1468			update_flags->bits.full_update = 1;
  1469			return UPDATE_TYPE_FULL;
  1470		}
  1471	
  1472		type = get_plane_info_update_type(u);
  1473		elevate_update_type(&overall_type, type);
  1474	
  1475		type = get_scaling_info_update_type(u);
  1476		elevate_update_type(&overall_type, type);
  1477	
  1478		if (u->in_transfer_func)
  1479			update_flags->bits.in_transfer_func_change = 1;
  1480	
  1481		if (u->input_csc_color_matrix)
  1482			update_flags->bits.input_csc_change = 1;
  1483	
  1484		if (u->coeff_reduction_factor)
  1485			update_flags->bits.coeff_reduction_change = 1;
  1486	
  1487		if (u->gamma) {
  1488			enum surface_pixel_format format = SURFACE_PIXEL_FORMAT_GRPH_BEGIN;
  1489	
  1490			if (u->plane_info)
  1491				format = u->plane_info->format;
  1492			else if (u->surface)
                                 ^^^^^^^^^^
But the old code assumed it could be NULL

  1493				format = u->surface->format;
  1494	

regards,
dan carpenter


More information about the amd-gfx mailing list