Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1728456 > unrolled thread
| Started by | Dmitry Torokhov <dmitry.torokhov@gmail.com> |
|---|---|
| First post | 2017-09-07 23:40 +0200 |
| Last post | 2017-09-07 23:40 +0200 |
| Articles | 1 — 1 participant |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH] Input: edt-ft5x06 - fix access to non-existing register Dmitry Torokhov <dmitry.torokhov@gmail.com> - 2017-09-07 23:40 +0200
| From | Dmitry Torokhov <dmitry.torokhov@gmail.com> |
|---|---|
| Date | 2017-09-07 23:40 +0200 |
| Subject | Re: [PATCH] Input: edt-ft5x06 - fix access to non-existing register |
| Message-ID | <uncGJ-5J7-9@gated-at.bofh.it> |
On Tue, Sep 05, 2017 at 02:45:23PM +0200, Luca Ceresoli wrote: > reg_addr->reg_report_rate is supposed to exist in M06, not M09. > > The driver is written to skip avoids access to non-existing registers > when the register address is NO_REGISTER (0xff). But > reg_addr->reg_report_rate is initialized to 0x00 by devm_kzalloc() (in > edt_ft5x06_ts_probe()) and not changed thereafter. So the checks do > not work and an access to register 0x00 is done. > > Fix by setting reg_addr->reg_report_rate to NO_REGISTER. > > Also fix the only place where reg_report_rate is checked against zero > instead of NO_REGISTER. > > Signed-off-by: Luca Ceresoli <luca@lucaceresoli.net> Applied, thank you. > --- > drivers/input/touchscreen/edt-ft5x06.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c > index f872817e81e4..5bf63f76ddda 100644 > --- a/drivers/input/touchscreen/edt-ft5x06.c > +++ b/drivers/input/touchscreen/edt-ft5x06.c > @@ -593,7 +593,7 @@ static int edt_ft5x06_work_mode(struct edt_ft5x06_ts_data *tsdata) > tsdata->gain); > edt_ft5x06_register_write(tsdata, reg_addr->reg_offset, > tsdata->offset); > - if (reg_addr->reg_report_rate) > + if (reg_addr->reg_report_rate != NO_REGISTER) > edt_ft5x06_register_write(tsdata, reg_addr->reg_report_rate, > tsdata->report_rate); > > @@ -874,6 +874,7 @@ edt_ft5x06_ts_set_regs(struct edt_ft5x06_ts_data *tsdata) > > case M09: > reg_addr->reg_threshold = M09_REGISTER_THRESHOLD; > + reg_addr->reg_report_rate = NO_REGISTER; > reg_addr->reg_gain = M09_REGISTER_GAIN; > reg_addr->reg_offset = M09_REGISTER_OFFSET; > reg_addr->reg_num_x = M09_REGISTER_NUM_X; > -- > 2.7.4 > -- Dmitry
Back to top | Article view | linux.kernel
csiph-web