question about drivers/gpu/drm/gma500/oaktrail_lvds.c

Julia Lawall julia.lawall at lip6.fr
Sun Jul 8 13:55:12 PDT 2012


On Sun, 8 Jul 2012, Alan Cox wrote:

> On Sun, 8 Jul 2012 10:39:43 +0200 (CEST)
> Julia Lawall <julia.lawall at lip6.fr> wrote:
>
>> In the function oaktrail_lvds_mode_set, I don't think that the following
>> code makes any sense:
>>
>>          /* Find the connector we're trying to set up */
>>          list_for_each_entry(connector, &mode_config->connector_list, head) {
>>                  if (!connector->encoder || connector->encoder->crtc != crtc)
>>                          continue;
>>          }
>>
>>          if (!connector) {
>>                  DRM_ERROR("Couldn't find connector when setting mode");
>>                  return;
>>          }
>>
>>          drm_connector_property_get_value(
>>                  connector,
>>                  dev->mode_config.scaling_mode_property,
>>                  &v);
>>
>> The initial loop is a no-op, because it always continues.  The test
>> !connector can never be true, because at the end of a list_for_each_entry
>> connector points to the list head, and calling
>> drm_connector_property_get_value on the list head probably does not make
>> sense.
>
> We test !connector->encoder rather than !connector ?

There is a test of !connector->encoder inside the loop.  But the whole 
loop body is a no-op because of the continue.  The only effect of the loop 
is to set connector to the list head, which is the exit condition for the 
loop.

The test of !connector is afterwards, but connector will not be NULL at 
that point, it will point to the list head.

julia


More information about the dri-devel mailing list