All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH]Silancing a false positive: "may be used uninitialized"
@ 2009-12-20  7:03 Marin Mitov
  2009-12-20  9:56 ` Simon Horman
  0 siblings, 1 reply; 4+ messages in thread
From: Marin Mitov @ 2009-12-20  7:03 UTC (permalink / raw)
  To: David Airlie; +Cc: Jesse Barnes, dri-devel, linux-kernel

Hello all,

Silancing a false positive:
warning: 'width' may be used uninitialized in this function
drivers/gpu/drm/drm_edid.c

Signed-off-by: Marin Mitov <mitov@issp.bas.bg>
==========================================================================
--- a/drivers/gpu/drm/drm_edid.c	2009-12-20 07:43:57.000000000 +0200
+++ b/drivers/gpu/drm/drm_edid.c	2009-12-20 07:45:49.000000000 +0200
@@ -913,7 +913,7 @@
 	const int rates[] = { 60, 85, 75, 60, 50 };
 
 	for (i = 0; i < 4; i++) {
-		int width, height;
+		int uninitialized_var(width), height;
 		cvt = &(timing->data.other_data.data.cvt[i]);
 
 		height = (cvt->code[0] + ((cvt->code[1] & 0xf0) << 8) + 1) * 2;

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH]Silancing a false positive: "may be used uninitialized"
  2009-12-20  7:03 [PATCH]Silancing a false positive: "may be used uninitialized" Marin Mitov
@ 2009-12-20  9:56 ` Simon Horman
  2009-12-20 10:43   ` Marin Mitov
  0 siblings, 1 reply; 4+ messages in thread
From: Simon Horman @ 2009-12-20  9:56 UTC (permalink / raw)
  To: Marin Mitov; +Cc: David Airlie, Jesse Barnes, dri-devel, linux-kernel

On Sun, Dec 20, 2009 at 09:03:27AM +0200, Marin Mitov wrote:
> Hello all,
> 
> Silancing a false positive:
> warning: 'width' may be used uninitialized in this function
> drivers/gpu/drm/drm_edid.c

Is it guaranteed that the switch will always see a value covered by the
four cases it has?  If not width would be used without having been initialised.

Perhaps adding

		default:
			BUG();

would be worthwhile?

> 
> Signed-off-by: Marin Mitov <mitov@issp.bas.bg>
> ==========================================================================
> --- a/drivers/gpu/drm/drm_edid.c	2009-12-20 07:43:57.000000000 +0200
> +++ b/drivers/gpu/drm/drm_edid.c	2009-12-20 07:45:49.000000000 +0200
> @@ -913,7 +913,7 @@
>  	const int rates[] = { 60, 85, 75, 60, 50 };
>  
>  	for (i = 0; i < 4; i++) {
> -		int width, height;
> +		int uninitialized_var(width), height;
>  		cvt = &(timing->data.other_data.data.cvt[i]);
>  
>  		height = (cvt->code[0] + ((cvt->code[1] & 0xf0) << 8) + 1) * 2;
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH]Silancing a false positive: "may be used uninitialized"
  2009-12-20  9:56 ` Simon Horman
@ 2009-12-20 10:43   ` Marin Mitov
  2009-12-20 21:14     ` Simon Horman
  0 siblings, 1 reply; 4+ messages in thread
From: Marin Mitov @ 2009-12-20 10:43 UTC (permalink / raw)
  To: Simon Horman; +Cc: David Airlie, Jesse Barnes, dri-devel, linux-kernel

On Sunday 20 December 2009 11:56:44 am Simon Horman wrote:
> On Sun, Dec 20, 2009 at 09:03:27AM +0200, Marin Mitov wrote:
> > Hello all,
> > 
> > Silancing a false positive:
> > warning: 'width' may be used uninitialized in this function
> > drivers/gpu/drm/drm_edid.c
> 
> Is it guaranteed that the switch will always see a value covered by the
> four cases it has? 

Yes it is. The value is masked (& 0xc0) so all the possible values are
(0x00, 0x40, 0x80, 0xc0) covered by the switch. That's why it is false positive.

> If not width would be used without having been initialised.
> 
> Perhaps adding
> 
> 		default:
> 			BUG();
> 
> would be worthwhile?
> 
> > 
> > Signed-off-by: Marin Mitov <mitov@issp.bas.bg>
> > ==========================================================================
> > --- a/drivers/gpu/drm/drm_edid.c	2009-12-20 07:43:57.000000000 +0200
> > +++ b/drivers/gpu/drm/drm_edid.c	2009-12-20 07:45:49.000000000 +0200
> > @@ -913,7 +913,7 @@
> >  	const int rates[] = { 60, 85, 75, 60, 50 };
> >  
> >  	for (i = 0; i < 4; i++) {
> > -		int width, height;
> > +		int uninitialized_var(width), height;
> >  		cvt = &(timing->data.other_data.data.cvt[i]);
> >  
> >  		height = (cvt->code[0] + ((cvt->code[1] & 0xf0) << 8) + 1) * 2;
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at  http://www.tux.org/lkml/
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH]Silancing a false positive: "may be used uninitialized"
  2009-12-20 10:43   ` Marin Mitov
@ 2009-12-20 21:14     ` Simon Horman
  0 siblings, 0 replies; 4+ messages in thread
From: Simon Horman @ 2009-12-20 21:14 UTC (permalink / raw)
  To: Marin Mitov; +Cc: David Airlie, Jesse Barnes, dri-devel, linux-kernel

On Sun, Dec 20, 2009 at 12:43:19PM +0200, Marin Mitov wrote:
> On Sunday 20 December 2009 11:56:44 am Simon Horman wrote:
> > On Sun, Dec 20, 2009 at 09:03:27AM +0200, Marin Mitov wrote:
> > > Hello all,
> > > 
> > > Silancing a false positive:
> > > warning: 'width' may be used uninitialized in this function
> > > drivers/gpu/drm/drm_edid.c
> > 
> > Is it guaranteed that the switch will always see a value covered by the
> > four cases it has? 
> 
> Yes it is. The value is masked (& 0xc0) so all the possible values are
> (0x00, 0x40, 0x80, 0xc0) covered by the switch. That's why it is false positive.

Of course, silly me.


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-12-20 21:14 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-20  7:03 [PATCH]Silancing a false positive: "may be used uninitialized" Marin Mitov
2009-12-20  9:56 ` Simon Horman
2009-12-20 10:43   ` Marin Mitov
2009-12-20 21:14     ` Simon Horman

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.