From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932574AbdIGVeW (ORCPT ); Thu, 7 Sep 2017 17:34:22 -0400 Received: from mail-pf0-f193.google.com ([209.85.192.193]:36597 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756017AbdIGVeU (ORCPT ); Thu, 7 Sep 2017 17:34:20 -0400 X-Google-Smtp-Source: ADKCNb5X1xn4GQTNOKTO39++8Te/zEee2tbSHX/wyAWzKoSkjKu8YHOrcAcO/Ra0ah2B0RSAG0KQjQ== Date: Thu, 7 Sep 2017 14:34:17 -0700 From: Dmitry Torokhov To: Luca Ceresoli Cc: linux-input@vger.kernel.org, Lothar =?iso-8859-1?Q?Wa=DFmann?= , Manfred Schlaegl , Rob Herring , Aniroop Mathur , Guenter Roeck , Martin Kepplinger , linux-kernel@vger.kernel.org Subject: Re: [PATCH] Input: edt-ft5x06 - fix access to non-existing register Message-ID: <20170907213417.GD19320@dtor-ws> References: <1504615523-9663-1-git-send-email-luca@lucaceresoli.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1504615523-9663-1-git-send-email-luca@lucaceresoli.net> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 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