* [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.