[bug report] Input: add driver for Hynitron cstxxx touchscreens
From: Dan Carpenter <hidden>
Date: 2022-11-15 12:43:54
[ I sent this a couple weeks back, but it turns out that mutt + msmtp
has been silently eating my emails instead of sending them so I'm
resending two weeks of email. -dan ]
Hello Chris Morgan,
The patch 66603243f528: "Input: add driver for Hynitron cstxxx
touchscreens" from Oct 28, 2022, leads to the following Smatch static
checker warning:
drivers/input/touchscreen/hynitron_cstxxx.c:238 cst3xx_bootloader_enter()
error: uninitialized symbol 'tmp'.
drivers/input/touchscreen/hynitron_cstxxx.c
209 static int cst3xx_bootloader_enter(struct i2c_client *client)
210 {
211 int err;
212 u8 retry;
213 u32 tmp;
214 unsigned char buf[3];
215
216 for (retry = 0; retry < 5; retry++) {
217 hyn_reset_proc(client, (7 + retry));
I would have changed this to a while (retry--) { loop except the retry
value probably matters here.
218 /* set cmd to enter program mode */
219 put_unaligned_le24(CST3XX_BOOTLDR_PROG_CMD, buf);
220 err = cst3xx_i2c_write(client, buf, 3);
221 if (err)
222 continue;
223
224 usleep_range(2000, 2500);
225
226 /* check whether in program mode */
227 err = cst3xx_i2c_read_register(client,
228 CST3XX_BOOTLDR_PROG_CHK_REG,
229 buf, 1);
230 if (err)
231 continue;
232
233 tmp = get_unaligned(buf);
234 if (tmp == CST3XX_BOOTLDR_CHK_VAL)
235 break;
236 }
237
--> 238 if (tmp != CST3XX_BOOTLDR_CHK_VAL) {
This is a genuine bug. It should be checking if retry == 5 but maybe
with a define instead of a magic 5.
239 dev_err(&client->dev, "%s unable to enter bootloader mode\n",
240 __func__);
241 return -ENODEV;
242 }
243
244 hyn_reset_proc(client, 40);
245
246 return 0;
247 }
regards,
dan carpenter