All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Input: bcm5974.c initialize raw_w, raw_x and raw_y before it get used
@ 2009-09-12 17:16 Jaswinder Singh Rajput
  2009-09-12 23:24 ` Henrik Rydberg
  0 siblings, 1 reply; 7+ messages in thread
From: Jaswinder Singh Rajput @ 2009-09-12 17:16 UTC (permalink / raw)
  To: Henrik Rydberg, Dmitry Torokhov, linux-input


raw_w, raw_x and raw_y is used uninitialized for !raw_n

This also fixed these compilation warnings :

 CC [M]  drivers/input/mouse/bcm5974.o
drivers/input/mouse/bcm5974.c: In function ‘report_tp_state’:
drivers/input/mouse/bcm5974.c:319: warning: ‘raw_y’ may be used uninitialized in this function
drivers/input/mouse/bcm5974.c:319: warning: ‘raw_x’ may be used uninitialized in this function
drivers/input/mouse/bcm5974.c:319: warning: ‘raw_w’ may be used uninitialized in this function

Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com>
---
 drivers/input/mouse/bcm5974.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/input/mouse/bcm5974.c b/drivers/input/mouse/bcm5974.c
index 2d8fc0b..171f345 100644
--- a/drivers/input/mouse/bcm5974.c
+++ b/drivers/input/mouse/bcm5974.c
@@ -345,7 +345,8 @@ static int report_tp_state(struct bcm5974 *dev, int size)
 		/* set the integrated button if applicable */
 		if (c->tp_type == TYPE2)
 			ibt = raw2int(dev->tp_data[BUTTON_TYPE2]);
-	}
+	} else
+		raw_w = raw_x = raw_y = 0;
 
 	/* while tracking finger still valid, count all fingers */
 	if (ptest > PRESSURE_LOW && origin) {
-- 
1.6.4.2


--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH] Input: bcm5974.c initialize raw_w, raw_x and raw_y before it get used
  2009-09-12 17:16 [PATCH] Input: bcm5974.c initialize raw_w, raw_x and raw_y before it get used Jaswinder Singh Rajput
@ 2009-09-12 23:24 ` Henrik Rydberg
  2009-09-13  8:31   ` Jaswinder Singh Rajput
  0 siblings, 1 reply; 7+ messages in thread
From: Henrik Rydberg @ 2009-09-12 23:24 UTC (permalink / raw)
  To: Jaswinder Singh Rajput; +Cc: Dmitry Torokhov, linux-input

Jaswinder Singh Rajput wrote:
> raw_w, raw_x and raw_y is used uninitialized for !raw_n

Thanks for the heads up, but actually not, since !raw_n also implies
!(ptest > PRESSURE_LOW).

> This also fixed these compilation warnings :
> 
>  CC [M]  drivers/input/mouse/bcm5974.o
> drivers/input/mouse/bcm5974.c: In function ‘report_tp_state’:
> drivers/input/mouse/bcm5974.c:319: warning: ‘raw_y’ may be used uninitialized in this function
> drivers/input/mouse/bcm5974.c:319: warning: ‘raw_x’ may be used uninitialized in this function
> drivers/input/mouse/bcm5974.c:319: warning: ‘raw_w’ may be used uninitialized in this function
> 
> Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com>
> ---
>  drivers/input/mouse/bcm5974.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/input/mouse/bcm5974.c b/drivers/input/mouse/bcm5974.c
> index 2d8fc0b..171f345 100644
> --- a/drivers/input/mouse/bcm5974.c
> +++ b/drivers/input/mouse/bcm5974.c
> @@ -345,7 +345,8 @@ static int report_tp_state(struct bcm5974 *dev, int size)
>  		/* set the integrated button if applicable */
>  		if (c->tp_type == TYPE2)
>  			ibt = raw2int(dev->tp_data[BUTTON_TYPE2]);
> -	}
> +	} else
> +		raw_w = raw_x = raw_y = 0;
>  
>  	/* while tracking finger still valid, count all fingers */
>  	if (ptest > PRESSURE_LOW && origin) {

I would prefer treating raw_p on the same footing here, completing the set of
non-obviously initialized variables. It might also make sense to utilize the
same initialization technique already used in the code, thus:

diff --git a/drivers/input/mouse/bcm5974.c b/drivers/input/mouse/bcm5974.c
index 2d8fc0b..2f85876 100644
--- a/drivers/input/mouse/bcm5974.c
+++ b/drivers/input/mouse/bcm5974.c
@@ -316,7 +316,7 @@ static int report_tp_state(struct bcm5974 *dev, int size)
 	const struct bcm5974_config *c = &dev->cfg;
 	const struct tp_finger *f;
 	struct input_dev *input = dev->input;
-	int raw_p, raw_w, raw_x, raw_y, raw_n;
+	int raw_p = 0, raw_w = 0, raw_x = 0, raw_y = 0, raw_n;
 	int ptest = 0, origin = 0, ibt = 0, nmin = 0, nmax = 0;
 	int abs_p = 0, abs_w = 0, abs_x = 0, abs_y = 0;


I wonder how many cpu cycles in the world are spent making compilers happy.

Cheers,
Henrik
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH] Input: bcm5974.c initialize raw_w, raw_x and raw_y before it get used
  2009-09-12 23:24 ` Henrik Rydberg
@ 2009-09-13  8:31   ` Jaswinder Singh Rajput
  2009-09-13 11:39     ` Henrik Rydberg
  0 siblings, 1 reply; 7+ messages in thread
From: Jaswinder Singh Rajput @ 2009-09-13  8:31 UTC (permalink / raw)
  To: Henrik Rydberg; +Cc: Dmitry Torokhov, linux-input

On Sun, 2009-09-13 at 01:24 +0200, Henrik Rydberg wrote:
> Jaswinder Singh Rajput wrote:
> > raw_w, raw_x and raw_y is used uninitialized for !raw_n
> 
> Thanks for the heads up, but actually not, since !raw_n also implies
> !(ptest > PRESSURE_LOW).
> 

Then can we move 'if (ptest > PRESSURE_LOW && origin)' stuff to 'if
(raw_n)'. If not then my patch is correct.

> > This also fixed these compilation warnings :
> > 
> >  CC [M]  drivers/input/mouse/bcm5974.o
> > drivers/input/mouse/bcm5974.c: In function ‘report_tp_state’:
> > drivers/input/mouse/bcm5974.c:319: warning: ‘raw_y’ may be used uninitialized in this function
> > drivers/input/mouse/bcm5974.c:319: warning: ‘raw_x’ may be used uninitialized in this function
> > drivers/input/mouse/bcm5974.c:319: warning: ‘raw_w’ may be used uninitialized in this function
> > 
> > Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com>
> > ---
> >  drivers/input/mouse/bcm5974.c |    3 ++-
> >  1 files changed, 2 insertions(+), 1 deletions(-)
> > 
> > diff --git a/drivers/input/mouse/bcm5974.c b/drivers/input/mouse/bcm5974.c
> > index 2d8fc0b..171f345 100644
> > --- a/drivers/input/mouse/bcm5974.c
> > +++ b/drivers/input/mouse/bcm5974.c
> > @@ -345,7 +345,8 @@ static int report_tp_state(struct bcm5974 *dev, int size)
> >  		/* set the integrated button if applicable */
> >  		if (c->tp_type == TYPE2)
> >  			ibt = raw2int(dev->tp_data[BUTTON_TYPE2]);
> > -	}
> > +	} else
> > +		raw_w = raw_x = raw_y = 0;
> >  
> >  	/* while tracking finger still valid, count all fingers */
> >  	if (ptest > PRESSURE_LOW && origin) {
> 
> I would prefer treating raw_p on the same footing here, completing the set of
> non-obviously initialized variables. It might also make sense to utilize the
> same initialization technique already used in the code, thus:
> 

No, then you are wasting cpu cycles and doing double initialization for
some cases.

> diff --git a/drivers/input/mouse/bcm5974.c b/drivers/input/mouse/bcm5974.c
> index 2d8fc0b..2f85876 100644
> --- a/drivers/input/mouse/bcm5974.c
> +++ b/drivers/input/mouse/bcm5974.c
> @@ -316,7 +316,7 @@ static int report_tp_state(struct bcm5974 *dev, int size)
>  	const struct bcm5974_config *c = &dev->cfg;
>  	const struct tp_finger *f;
>  	struct input_dev *input = dev->input;
> -	int raw_p, raw_w, raw_x, raw_y, raw_n;
> +	int raw_p = 0, raw_w = 0, raw_x = 0, raw_y = 0, raw_n;
>  	int ptest = 0, origin = 0, ibt = 0, nmin = 0, nmax = 0;
>  	int abs_p = 0, abs_w = 0, abs_x = 0, abs_y = 0;
> 
> 
> I wonder how many cpu cycles in the world are spent making compilers happy.
> 

It is not compiler mistake it is programming/logic mistakes. We should
be thankful to compiler to pointing mistakes made by us.

Thanks,
--
JSR

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH] Input: bcm5974.c initialize raw_w, raw_x and raw_y before it get used
  2009-09-13  8:31   ` Jaswinder Singh Rajput
@ 2009-09-13 11:39     ` Henrik Rydberg
  2009-09-14  4:37       ` Dmitry Torokhov
  2009-09-14  9:00       ` Jaswinder Singh Rajput
  0 siblings, 2 replies; 7+ messages in thread
From: Henrik Rydberg @ 2009-09-13 11:39 UTC (permalink / raw)
  To: Jaswinder Singh Rajput; +Cc: Dmitry Torokhov, linux-input

Jaswinder Singh Rajput wrote:
> On Sun, 2009-09-13 at 01:24 +0200, Henrik Rydberg wrote:
>> Jaswinder Singh Rajput wrote:
>>> raw_w, raw_x and raw_y is used uninitialized for !raw_n
>> Thanks for the heads up, but actually not, since !raw_n also implies
>> !(ptest > PRESSURE_LOW).
>>
> 
> Then can we move 'if (ptest > PRESSURE_LOW && origin)' stuff to 'if
> (raw_n)'. If not then my patch is correct.

Yes, that's it, thanks. So this patch ought to solve the warning cleanly:

diff --git a/drivers/input/mouse/bcm5974.c b/drivers/input/mouse/bcm5974.c
index 2d8fc0b..3b598de 100644
--- a/drivers/input/mouse/bcm5974.c
+++ b/drivers/input/mouse/bcm5974.c
@@ -345,21 +345,22 @@ static int report_tp_state(struct bcm5974 *dev, int size)
 		/* set the integrated button if applicable */
 		if (c->tp_type == TYPE2)
 			ibt = raw2int(dev->tp_data[BUTTON_TYPE2]);
-	}

-	/* while tracking finger still valid, count all fingers */
-	if (ptest > PRESSURE_LOW && origin) {
-		abs_p = ptest;
-		abs_w = int2bound(&c->w, raw_w);
-		abs_x = int2bound(&c->x, raw_x - c->x.devmin);
-		abs_y = int2bound(&c->y, c->y.devmax - raw_y);
-		while (raw_n--) {
-			ptest = int2bound(&c->p, raw2int(f->force_major));
-			if (ptest > PRESSURE_LOW)
-				nmax++;
-			if (ptest > PRESSURE_HIGH)
-				nmin++;
-			f++;
+		/* while tracking finger still valid, count all fingers */
+		if (ptest > PRESSURE_LOW && origin) {
+			abs_p = ptest;
+			abs_w = int2bound(&c->w, raw_w);
+			abs_x = int2bound(&c->x, raw_x - c->x.devmin);
+			abs_y = int2bound(&c->y, c->y.devmax - raw_y);
+			while (raw_n--) {
+				ptest = int2bound(&c->p,
+						  raw2int(f->force_major));
+				if (ptest > PRESSURE_LOW)
+					nmax++;
+				if (ptest > PRESSURE_HIGH)
+					nmin++;
+				f++;
+			}
 		}
 	}

> 
>>> This also fixed these compilation warnings :
>>>
>>>  CC [M]  drivers/input/mouse/bcm5974.o
>>> drivers/input/mouse/bcm5974.c: In function ‘report_tp_state’:
>>> drivers/input/mouse/bcm5974.c:319: warning: ‘raw_y’ may be used uninitialized in this function
>>> drivers/input/mouse/bcm5974.c:319: warning: ‘raw_x’ may be used uninitialized in this function
>>> drivers/input/mouse/bcm5974.c:319: warning: ‘raw_w’ may be used uninitialized in this function
>>>
>>> Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com>
>>> ---
>>>  drivers/input/mouse/bcm5974.c |    3 ++-
>>>  1 files changed, 2 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/drivers/input/mouse/bcm5974.c b/drivers/input/mouse/bcm5974.c
>>> index 2d8fc0b..171f345 100644
>>> --- a/drivers/input/mouse/bcm5974.c
>>> +++ b/drivers/input/mouse/bcm5974.c
>>> @@ -345,7 +345,8 @@ static int report_tp_state(struct bcm5974 *dev, int size)
>>>  		/* set the integrated button if applicable */
>>>  		if (c->tp_type == TYPE2)
>>>  			ibt = raw2int(dev->tp_data[BUTTON_TYPE2]);
>>> -	}
>>> +	} else
>>> +		raw_w = raw_x = raw_y = 0;
>>>  
>>>  	/* while tracking finger still valid, count all fingers */
>>>  	if (ptest > PRESSURE_LOW && origin) {
>> I would prefer treating raw_p on the same footing here, completing the set of
>> non-obviously initialized variables. It might also make sense to utilize the
>> same initialization technique already used in the code, thus:
>>
> 
> No, then you are wasting cpu cycles and doing double initialization for
> some cases.
> 
>> diff --git a/drivers/input/mouse/bcm5974.c b/drivers/input/mouse/bcm5974.c
>> index 2d8fc0b..2f85876 100644
>> --- a/drivers/input/mouse/bcm5974.c
>> +++ b/drivers/input/mouse/bcm5974.c
>> @@ -316,7 +316,7 @@ static int report_tp_state(struct bcm5974 *dev, int size)
>>  	const struct bcm5974_config *c = &dev->cfg;
>>  	const struct tp_finger *f;
>>  	struct input_dev *input = dev->input;
>> -	int raw_p, raw_w, raw_x, raw_y, raw_n;
>> +	int raw_p = 0, raw_w = 0, raw_x = 0, raw_y = 0, raw_n;
>>  	int ptest = 0, origin = 0, ibt = 0, nmin = 0, nmax = 0;
>>  	int abs_p = 0, abs_w = 0, abs_x = 0, abs_y = 0;
>>
>>
>> I wonder how many cpu cycles in the world are spent making compilers happy.
>>
> 
> It is not compiler mistake it is programming/logic mistakes. We should
> be thankful to compiler to pointing mistakes made by us.

The uninitialized-variable warnings have certainly proved their value many times
over. I was merely reflecting over the fact that the enclosing space of all such
errors could be made smaller by deduction at compile time.

Cheers,
Henrik

--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH] Input: bcm5974.c initialize raw_w, raw_x and raw_y before it get used
  2009-09-13 11:39     ` Henrik Rydberg
@ 2009-09-14  4:37       ` Dmitry Torokhov
  2009-09-14  9:00       ` Jaswinder Singh Rajput
  1 sibling, 0 replies; 7+ messages in thread
From: Dmitry Torokhov @ 2009-09-14  4:37 UTC (permalink / raw)
  To: Henrik Rydberg; +Cc: Jaswinder Singh Rajput, linux-input

On Sun, Sep 13, 2009 at 01:39:21PM +0200, Henrik Rydberg wrote:
> Jaswinder Singh Rajput wrote:
> > On Sun, 2009-09-13 at 01:24 +0200, Henrik Rydberg wrote:
> >> Jaswinder Singh Rajput wrote:
> >>> raw_w, raw_x and raw_y is used uninitialized for !raw_n
> >> Thanks for the heads up, but actually not, since !raw_n also implies
> >> !(ptest > PRESSURE_LOW).
> >>
> > 
> > Then can we move 'if (ptest > PRESSURE_LOW && origin)' stuff to 'if
> > (raw_n)'. If not then my patch is correct.
> 
> Yes, that's it, thanks. So this patch ought to solve the warning cleanly:
> 

Yes, I like this one much better, applied.

> >>
> >>
> >> I wonder how many cpu cycles in the world are spent making compilers happy.
> >>
> > 
> > It is not compiler mistake it is programming/logic mistakes. We should
> > be thankful to compiler to pointing mistakes made by us.
> 

Except in cases when the compiler is wrong...

> The uninitialized-variable warnings have certainly proved their value many times
> over. I was merely reflecting over the fact that the enclosing space of all such
> errors could be made smaller by deduction at compile time.
> 

-- 
Dmitry

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

* Re: [PATCH] Input: bcm5974.c initialize raw_w, raw_x and raw_y before it get used
  2009-09-13 11:39     ` Henrik Rydberg
  2009-09-14  4:37       ` Dmitry Torokhov
@ 2009-09-14  9:00       ` Jaswinder Singh Rajput
  2009-09-15 11:23         ` Henrik Rydberg
  1 sibling, 1 reply; 7+ messages in thread
From: Jaswinder Singh Rajput @ 2009-09-14  9:00 UTC (permalink / raw)
  To: Henrik Rydberg; +Cc: Dmitry Torokhov, linux-input

Hello Henrik,

On Sun, 2009-09-13 at 13:39 +0200, Henrik Rydberg wrote:
> Jaswinder Singh Rajput wrote:
> > On Sun, 2009-09-13 at 01:24 +0200, Henrik Rydberg wrote:
> >> Jaswinder Singh Rajput wrote:
> >>> raw_w, raw_x and raw_y is used uninitialized for !raw_n
> >> Thanks for the heads up, but actually not, since !raw_n also implies
> >> !(ptest > PRESSURE_LOW).
> >>
> > 
> > Then can we move 'if (ptest > PRESSURE_LOW && origin)' stuff to 'if
> > (raw_n)'. If not then my patch is correct.
> 
> Yes, that's it, thanks. So this patch ought to solve the warning cleanly:

hmm, even then there is room for improvement and save some cpu cycles :

diff --git a/drivers/input/mouse/bcm5974.c b/drivers/input/mouse/bcm5974.c
index 2d8fc0b..21ea2e3 100644
--- a/drivers/input/mouse/bcm5974.c
+++ b/drivers/input/mouse/bcm5974.c
@@ -316,8 +316,7 @@ static int report_tp_state(struct bcm5974 *dev, int size)
 	const struct bcm5974_config *c = &dev->cfg;
 	const struct tp_finger *f;
 	struct input_dev *input = dev->input;
-	int raw_p, raw_w, raw_x, raw_y, raw_n;
-	int ptest = 0, origin = 0, ibt = 0, nmin = 0, nmax = 0;
+	int raw_n, ibt = 0, nmin = 0, nmax = 0;
 	int abs_p = 0, abs_w = 0, abs_x = 0, abs_y = 0;
 
 	if (size < c->tp_offset || (size - c->tp_offset) % SIZEOF_FINGER != 0)
@@ -329,6 +328,9 @@ static int report_tp_state(struct bcm5974 *dev, int size)
 
 	/* always track the first finger; when detached, start over */
 	if (raw_n) {
+		int raw_p, raw_w, raw_x, raw_y;
+		int ptest, origin;
+
 		raw_p = raw2int(f->force_major);
 		raw_w = raw2int(f->size_major);
 		raw_x = raw2int(f->abs_x);


And by changing little bit programming logic you can also reduce
variable count and save some more cpu cycles.

Thanks,
--
JSR


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

* Re: [PATCH] Input: bcm5974.c initialize raw_w, raw_x and raw_y before it get used
  2009-09-14  9:00       ` Jaswinder Singh Rajput
@ 2009-09-15 11:23         ` Henrik Rydberg
  0 siblings, 0 replies; 7+ messages in thread
From: Henrik Rydberg @ 2009-09-15 11:23 UTC (permalink / raw)
  To: Jaswinder Singh Rajput; +Cc: Dmitry Torokhov, linux-input

Jaswinder Singh Rajput wrote:
> Hello Henrik,
> 
> On Sun, 2009-09-13 at 13:39 +0200, Henrik Rydberg wrote:
>> Jaswinder Singh Rajput wrote:
>>> On Sun, 2009-09-13 at 01:24 +0200, Henrik Rydberg wrote:
>>>> Jaswinder Singh Rajput wrote:
>>>>> raw_w, raw_x and raw_y is used uninitialized for !raw_n
>>>> Thanks for the heads up, but actually not, since !raw_n also implies
>>>> !(ptest > PRESSURE_LOW).
>>>>
>>> Then can we move 'if (ptest > PRESSURE_LOW && origin)' stuff to 'if
>>> (raw_n)'. If not then my patch is correct.
>> Yes, that's it, thanks. So this patch ought to solve the warning cleanly:
> 
> hmm, even then there is room for improvement and save some cpu cycles :

Thanks, ill keep this one in reserve.

Henrik


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

end of thread, other threads:[~2009-09-15 11:23 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-09-12 17:16 [PATCH] Input: bcm5974.c initialize raw_w, raw_x and raw_y before it get used Jaswinder Singh Rajput
2009-09-12 23:24 ` Henrik Rydberg
2009-09-13  8:31   ` Jaswinder Singh Rajput
2009-09-13 11:39     ` Henrik Rydberg
2009-09-14  4:37       ` Dmitry Torokhov
2009-09-14  9:00       ` Jaswinder Singh Rajput
2009-09-15 11:23         ` Henrik Rydberg

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.