Message ID | 20210603220809.155118-1-colin.king@canonical.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 6cdc1ef84eacca85642828840f2ec4f84130c9b6 |
Headers | show |
Series | [next] Input: resistive-adc-touch: Fix uninitialized variable 'press' | expand |
Hi Colin, On Thu, Jun 03, 2021 at 11:08:09PM +0100, Colin King wrote: > From: Colin Ian King <colin.king@canonical.com> > > In the case where st->ch_map[GRTS_CH_PRESSURE] < GRTS_MAX_CHANNELS is false > and also st->ch_map[GRTS_CH_Z1] < GRTS_MAX_CHANNELS is false the variable > press is not initialized and contains garbage. This affects a later > comparison of press < st->pressure_min. If neither of the conditions is true, then st->pressure is also false, and we will not be evaluating condition involving "press". However it is impossible for the compiler/Coverity to figure this out, so I'll apply the patch adjusting the description a bit. Thanks.
diff --git a/drivers/input/touchscreen/resistive-adc-touch.c b/drivers/input/touchscreen/resistive-adc-touch.c index ea7dd9d2b2ac..744544a723b7 100644 --- a/drivers/input/touchscreen/resistive-adc-touch.c +++ b/drivers/input/touchscreen/resistive-adc-touch.c @@ -59,7 +59,7 @@ static int grts_cb(const void *data, void *private) { const u16 *touch_info = data; struct grts_state *st = private; - unsigned int x, y, press; + unsigned int x, y, press = 0; x = touch_info[st->ch_map[GRTS_CH_X]]; y = touch_info[st->ch_map[GRTS_CH_Y]]; @@ -84,8 +84,6 @@ static int grts_cb(const void *data, void *private) */ if (Rt < GRTS_DEFAULT_PRESSURE_MAX) press = GRTS_DEFAULT_PRESSURE_MAX - Rt; - else - press = 0; } if ((!x && !y) || (st->pressure && (press < st->pressure_min))) {