Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1500100 > unrolled thread

[patch] drm/i915: fix a read size argument

Started byDan Carpenter <dan.carpenter@oracle.com>
First post2016-10-13 11:00 +0200
Last post2016-10-13 14:20 +0200
Articles 6 — 5 participants

Back to article view | Back to linux.kernel


Contents

  [patch] drm/i915: fix a read size argument Dan Carpenter <dan.carpenter@oracle.com> - 2016-10-13 11:00 +0200
    Re: [patch] drm/i915: fix a read size argument Eric Engestrom <eric.engestrom@imgtec.com> - 2016-10-13 11:10 +0200
    Re: [Intel-gfx] [patch] drm/i915: fix a read size argument Chris Wilson <chris@chris-wilson.co.uk> - 2016-10-13 11:10 +0200
      Re: [Intel-gfx] [patch] drm/i915: fix a read size argument Dan Carpenter <dan.carpenter@oracle.com> - 2016-10-13 12:00 +0200
    Re: [patch] drm/i915: fix a read size argument walter harms <wharms@bfs.de> - 2016-10-13 11:50 +0200
      Re: [patch] drm/i915: fix a read size argument Jani Nikula <jani.nikula@linux.intel.com> - 2016-10-13 14:20 +0200

#1500100 — [patch] drm/i915: fix a read size argument

FromDan Carpenter <dan.carpenter@oracle.com>
Date2016-10-13 11:00 +0200
Subject[patch] drm/i915: fix a read size argument
Message-ID<srK1Q-1cz-5@gated-at.bofh.it>
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))
 		DRM_DEBUG_KMS("EDP DPCD : %*ph\n", (int) sizeof(intel_dp->edp_dpcd),
 			      intel_dp->edp_dpcd);
 

[toc] | [next] | [standalone]


#1500111

FromEric Engestrom <eric.engestrom@imgtec.com>
Date2016-10-13 11:10 +0200
Message-ID<srKbv-1uX-7@gated-at.bofh.it>
In reply to#1500100
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);

[toc] | [prev] | [next] | [standalone]


#1500112 — Re: [Intel-gfx] [patch] drm/i915: fix a read size argument

FromChris Wilson <chris@chris-wilson.co.uk>
Date2016-10-13 11:10 +0200
SubjectRe: [Intel-gfx] [patch] drm/i915: fix a read size argument
Message-ID<srKbv-1uX-1@gated-at.bofh.it>
In reply to#1500100
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

-- 
Chris Wilson, Intel Open Source Technology Centre

[toc] | [prev] | [next] | [standalone]


#1500130 — Re: [Intel-gfx] [patch] drm/i915: fix a read size argument

FromDan Carpenter <dan.carpenter@oracle.com>
Date2016-10-13 12:00 +0200
SubjectRe: [Intel-gfx] [patch] drm/i915: fix a read size argument
Message-ID<srKXT-1LD-1@gated-at.bofh.it>
In reply to#1500112
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

[toc] | [prev] | [next] | [standalone]


#1500127

Fromwalter harms <wharms@bfs.de>
Date2016-10-13 11:50 +0200
Message-ID<srKOe-1Ic-5@gated-at.bofh.it>
In reply to#1500100

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
> 

[toc] | [prev] | [next] | [standalone]


#1500232

FromJani Nikula <jani.nikula@linux.intel.com>
Date2016-10-13 14:20 +0200
Message-ID<srN9o-3q6-31@gated-at.bofh.it>
In reply to#1500127
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.


-- 
Jani Nikula, Intel Open Source Technology Center

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web