Message ID | 20210618183524.590186-1-colin.king@canonical.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/gma500/oaktrail_lvds: replace continue with break | expand |
On Fri, Jun 18, 2021 at 8:35 PM Colin King <colin.king@canonical.com> wrote: > > From: Colin Ian King <colin.king@canonical.com> > > Currently a loop scans through the connector list checking > for connectors that do not match a specific criteria. The > use of the continue statement is a little unintuitive and > can confuse static analysis checking. Invert the criteria > matching logic and use a break to terminate the loop once > the first suitable connector has been found. > > Thanks to Patrik Jakobsson for explaining the original > intent of the code and suggesting this change. Applied to drm-misc-next Thanks for the patch!
On Fri, Jun 18, 2021 at 07:35:24PM +0100, Colin King wrote: > From: Colin Ian King <colin.king@canonical.com> > > Currently a loop scans through the connector list checking > for connectors that do not match a specific criteria. The > use of the continue statement is a little unintuitive and > can confuse static analysis checking. Invert the criteria > matching logic and use a break to terminate the loop once > the first suitable connector has been found. > > Thanks to Patrik Jakobsson for explaining the original > intent of the code and suggesting this change. > > Addresses-Coverity: ("Continue has no effect") > Signed-off-by: Colin Ian King <colin.king@canonical.com> > --- > drivers/gpu/drm/gma500/oaktrail_lvds.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/gma500/oaktrail_lvds.c b/drivers/gpu/drm/gma500/oaktrail_lvds.c > index 432bdcc57ac9..8541dcf237eb 100644 > --- a/drivers/gpu/drm/gma500/oaktrail_lvds.c > +++ b/drivers/gpu/drm/gma500/oaktrail_lvds.c > @@ -113,8 +113,8 @@ static void oaktrail_lvds_mode_set(struct drm_encoder *encoder, > > /* 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->encoder && connector->encoder->crtc == crtc) > + break; > } > > if (!connector) { This test is wrong/impossible. It should be: if (list_entry_is_head(connector, &mode_config->connector_list, head)) { regards, dan carpenter
On Sat, Jun 19, 2021 at 3:40 PM Dan Carpenter <dan.carpenter@oracle.com> wrote: > > On Fri, Jun 18, 2021 at 07:35:24PM +0100, Colin King wrote: > > From: Colin Ian King <colin.king@canonical.com> > > > > Currently a loop scans through the connector list checking > > for connectors that do not match a specific criteria. The > > use of the continue statement is a little unintuitive and > > can confuse static analysis checking. Invert the criteria > > matching logic and use a break to terminate the loop once > > the first suitable connector has been found. > > > > Thanks to Patrik Jakobsson for explaining the original > > intent of the code and suggesting this change. > > > > Addresses-Coverity: ("Continue has no effect") > > Signed-off-by: Colin Ian King <colin.king@canonical.com> > > --- > > drivers/gpu/drm/gma500/oaktrail_lvds.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/gpu/drm/gma500/oaktrail_lvds.c b/drivers/gpu/drm/gma500/oaktrail_lvds.c > > index 432bdcc57ac9..8541dcf237eb 100644 > > --- a/drivers/gpu/drm/gma500/oaktrail_lvds.c > > +++ b/drivers/gpu/drm/gma500/oaktrail_lvds.c > > @@ -113,8 +113,8 @@ static void oaktrail_lvds_mode_set(struct drm_encoder *encoder, > > > > /* 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->encoder && connector->encoder->crtc == crtc) > > + break; > > } > > > > if (!connector) { > > This test is wrong/impossible. It should be: > > if (list_entry_is_head(connector, &mode_config->connector_list, > head)) { Right, we should be back at the head if no match was found. Actually, when looking closer, we should use drm_for_each_connector_iter() when walking the connector list together with proper locking. -Patrik > > regards, > dan carpenter > >
diff --git a/drivers/gpu/drm/gma500/oaktrail_lvds.c b/drivers/gpu/drm/gma500/oaktrail_lvds.c index 432bdcc57ac9..8541dcf237eb 100644 --- a/drivers/gpu/drm/gma500/oaktrail_lvds.c +++ b/drivers/gpu/drm/gma500/oaktrail_lvds.c @@ -113,8 +113,8 @@ static void oaktrail_lvds_mode_set(struct drm_encoder *encoder, /* 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->encoder && connector->encoder->crtc == crtc) + break; } if (!connector) {