Message ID | 20161013085508.GJ16198@mwanda (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Oct 13, 2016 at 11:55:08AM +0300, Dan Carpenter wrote: > We want to read 3 bytes here, but because the parenthesis are in the > wrong place we instead read: > > sizeof(intel_dp->edp_dpcd) == sizeof(intel_dp->edp_dpcd) > > which is one byte. > > Fixes: fe5a66f91c88 ("drm/i915: Read PSR caps/intermediate freqs/etc. only once on eDP") > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Oops, does smatch catch this? I don't recall seeing the complaint in recent runs? Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> -Chris
On Thu, Oct 13, 2016 at 11:55:08AM +0300, Dan Carpenter wrote: > We want to read 3 bytes here, but because the parenthesis are in the > wrong place we instead read: > > sizeof(intel_dp->edp_dpcd) == sizeof(intel_dp->edp_dpcd) > > which is one byte. > > Fixes: fe5a66f91c88 ("drm/i915: Read PSR caps/intermediate freqs/etc. only once on eDP") > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Good catch! What tool did you use to find it, or did you find it by inspection? Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com> (btw, there's a missing `---` here, between the commit msg and the diff) > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index 14a3cf0..ee8aa95 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -3551,8 +3551,8 @@ intel_edp_init_dpcd(struct intel_dp *intel_dp) > /* Read the eDP Display control capabilities registers */ > if ((intel_dp->dpcd[DP_EDP_CONFIGURATION_CAP] & DP_DPCD_DISPLAY_CONTROL_CAPABLE) && > drm_dp_dpcd_read(&intel_dp->aux, DP_EDP_DPCD_REV, > - intel_dp->edp_dpcd, sizeof(intel_dp->edp_dpcd) == > - sizeof(intel_dp->edp_dpcd))) > + intel_dp->edp_dpcd, sizeof(intel_dp->edp_dpcd)) == > + sizeof(intel_dp->edp_dpcd)) > DRM_DEBUG_KMS("EDP DPCD : %*ph\n", (int) sizeof(intel_dp->edp_dpcd), > intel_dp->edp_dpcd);
Am 13.10.2016 10:55, schrieb Dan Carpenter: > We want to read 3 bytes here, but because the parenthesis are in the > wrong place we instead read: > > sizeof(intel_dp->edp_dpcd) == sizeof(intel_dp->edp_dpcd) > > which is one byte. > > Fixes: fe5a66f91c88 ("drm/i915: Read PSR caps/intermediate freqs/etc. only once on eDP") > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index 14a3cf0..ee8aa95 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -3551,8 +3551,8 @@ intel_edp_init_dpcd(struct intel_dp *intel_dp) > /* Read the eDP Display control capabilities registers */ > if ((intel_dp->dpcd[DP_EDP_CONFIGURATION_CAP] & DP_DPCD_DISPLAY_CONTROL_CAPABLE) && > drm_dp_dpcd_read(&intel_dp->aux, DP_EDP_DPCD_REV, > - intel_dp->edp_dpcd, sizeof(intel_dp->edp_dpcd) == > - sizeof(intel_dp->edp_dpcd))) > + intel_dp->edp_dpcd, sizeof(intel_dp->edp_dpcd)) == > + sizeof(intel_dp->edp_dpcd)) perhaps we can morph that into something more readable ? I would suggest: if (intel_dp->dpcd[DP_EDP_CONFIGURATION_CAP] & DP_DPCD_DISPLAY_CONTROL_CAPABLE) { size_t size=sizeof(intel_dp->edp_dpcd); /* == EDP_DISPLAY_CTL_CAP_SIZE */ int ret; ret=drm_dp_dpcd_read(&intel_dp->aux, DP_EDP_DPCD_REV,intel_dp->edp_dpcd,size); if (ret != size ) ...... } this way it improves readability and reduces line length. > DRM_DEBUG_KMS("EDP DPCD : %*ph\n", (int) sizeof(intel_dp->edp_dpcd), > intel_dp->edp_dpcd); > > -- > To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >
On Thu, Oct 13, 2016 at 10:01:03AM +0100, Chris Wilson wrote: > On Thu, Oct 13, 2016 at 11:55:08AM +0300, Dan Carpenter wrote: > > We want to read 3 bytes here, but because the parenthesis are in the > > wrong place we instead read: > > > > sizeof(intel_dp->edp_dpcd) == sizeof(intel_dp->edp_dpcd) > > > > which is one byte. > > > > Fixes: fe5a66f91c88 ("drm/i915: Read PSR caps/intermediate freqs/etc. only once on eDP") > > Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> > > Oops, does smatch catch this? Yeah. It does. regards, dan carpenter
On Thu, 13 Oct 2016, walter harms <wharms@bfs.de> wrote: > Am 13.10.2016 10:55, schrieb Dan Carpenter: >> We want to read 3 bytes here, but because the parenthesis are in the >> wrong place we instead read: >> >> sizeof(intel_dp->edp_dpcd) == sizeof(intel_dp->edp_dpcd) >> >> which is one byte. >> >> Fixes: fe5a66f91c88 ("drm/i915: Read PSR caps/intermediate freqs/etc. only once on eDP") >> Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Dan, good catch, thank you. Luckily we only really use the first byte currently... Cc: <drm-intel-fixes@lists.freedesktop.org> >> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c >> index 14a3cf0..ee8aa95 100644 >> --- a/drivers/gpu/drm/i915/intel_dp.c >> +++ b/drivers/gpu/drm/i915/intel_dp.c >> @@ -3551,8 +3551,8 @@ intel_edp_init_dpcd(struct intel_dp *intel_dp) >> /* Read the eDP Display control capabilities registers */ >> if ((intel_dp->dpcd[DP_EDP_CONFIGURATION_CAP] & DP_DPCD_DISPLAY_CONTROL_CAPABLE) && >> drm_dp_dpcd_read(&intel_dp->aux, DP_EDP_DPCD_REV, >> - intel_dp->edp_dpcd, sizeof(intel_dp->edp_dpcd) == >> - sizeof(intel_dp->edp_dpcd))) >> + intel_dp->edp_dpcd, sizeof(intel_dp->edp_dpcd)) == >> + sizeof(intel_dp->edp_dpcd)) > > > > perhaps we can morph that into something more readable ? I would suggest: > > > if (intel_dp->dpcd[DP_EDP_CONFIGURATION_CAP] & DP_DPCD_DISPLAY_CONTROL_CAPABLE) > { > size_t size=sizeof(intel_dp->edp_dpcd); /* == EDP_DISPLAY_CTL_CAP_SIZE */ > int ret; > > ret=drm_dp_dpcd_read(&intel_dp->aux, DP_EDP_DPCD_REV,intel_dp->edp_dpcd,size); > > if (ret != size ) > ...... > > } > > this way it improves readability and reduces line length. Not convinced, let's just take the simple brace fix now. BR, Jani.
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 14a3cf0..ee8aa95 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -3551,8 +3551,8 @@ intel_edp_init_dpcd(struct intel_dp *intel_dp) /* Read the eDP Display control capabilities registers */ if ((intel_dp->dpcd[DP_EDP_CONFIGURATION_CAP] & DP_DPCD_DISPLAY_CONTROL_CAPABLE) && drm_dp_dpcd_read(&intel_dp->aux, DP_EDP_DPCD_REV, - intel_dp->edp_dpcd, sizeof(intel_dp->edp_dpcd) == - sizeof(intel_dp->edp_dpcd))) + intel_dp->edp_dpcd, sizeof(intel_dp->edp_dpcd)) == + sizeof(intel_dp->edp_dpcd)) DRM_DEBUG_KMS("EDP DPCD : %*ph\n", (int) sizeof(intel_dp->edp_dpcd), intel_dp->edp_dpcd);
We want to read 3 bytes here, but because the parenthesis are in the wrong place we instead read: sizeof(intel_dp->edp_dpcd) == sizeof(intel_dp->edp_dpcd) which is one byte. Fixes: fe5a66f91c88 ("drm/i915: Read PSR caps/intermediate freqs/etc. only once on eDP") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>