lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 09 Sep 2015 18:58:05 +0200
From:	Bastien Nocera <hadess@...ess.net>
To:	Irina Tirdea <irina.tirdea@...el.com>,
	Dmitry Torokhov <dmitry.torokhov@...il.com>,
	Aleksei Mamlin <mamlinav@...il.com>,
	linux-input@...r.kernel.org
Cc:	Mark Rutland <mark.rutland@....com>,
	Octavian Purdila <octavian.purdila@...el.com>,
	linux-kernel@...r.kernel.org, devicetree@...r.kernel.org
Subject: Re: [PATCH v5 2/9] Input: goodix - use actual config length for
 each device type

On Mon, 2015-09-07 at 17:36 +0300, Irina Tirdea wrote:
> Each of the Goodix devices supported by this driver has a fixed size
> for
> the configuration information registers. The size varies depending on
> the
> device and is specified in the datasheet.
> 
> Use the proper configuration length as specified in the datasheet for
> each device model, so we do not read more than the actual size of the
> configuration registers.
> 
> Signed-off-by: Irina Tirdea <irina.tirdea@...el.com>

Acked-by: Bastien Nocera <hadess@...ess.net>

> ---
>  drivers/input/touchscreen/goodix.c | 25 +++++++++++++++++++++++--
>  1 file changed, 23 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/input/touchscreen/goodix.c
> b/drivers/input/touchscreen/goodix.c
> index 6ae28c5..7be6eab 100644
> --- a/drivers/input/touchscreen/goodix.c
> +++ b/drivers/input/touchscreen/goodix.c
> @@ -36,6 +36,7 @@ struct goodix_ts_data {
>  	unsigned int max_touch_num;
>  	unsigned int int_trigger_type;
>  	bool rotated_screen;
> +	int cfg_len;
>  };
>  
>  #define GOODIX_MAX_HEIGHT		4096
> @@ -45,6 +46,8 @@ struct goodix_ts_data {
>  #define GOODIX_MAX_CONTACTS		10
>  
>  #define GOODIX_CONFIG_MAX_LENGTH	240
> +#define GOODIX_CONFIG_911_LENGTH	186
> +#define GOODIX_CONFIG_967_LENGTH	228
>  
>  /* Register defines */
>  #define GOODIX_READ_COOR_ADDR		0x814E
> @@ -115,6 +118,23 @@ static int goodix_i2c_read(struct i2c_client
> *client,
>  	return ret < 0 ? ret : (ret != ARRAY_SIZE(msgs) ? -EIO : 0);
>  }
>  
> +static int goodix_get_cfg_len(u16 id)
> +{
> +	switch (id) {
> +	case 911:
> +	case 9271:
> +	case 9110:
> +	case 927:
> +	case 928:
> +		return GOODIX_CONFIG_911_LENGTH;
> +	case 912:
> +	case 967:
> +		return GOODIX_CONFIG_967_LENGTH;
> +	default:
> +		return GOODIX_CONFIG_MAX_LENGTH;
> +	}
> +}
> +
>  static int goodix_ts_read_input_report(struct goodix_ts_data *ts, u8
> *data)
>  {
>  	int touch_num;
> @@ -230,8 +250,7 @@ static void goodix_read_config(struct
> goodix_ts_data *ts)
>  	int error;
>  
>  	error = goodix_i2c_read(ts->client, GOODIX_REG_CONFIG_DATA,
> -				config,
> -				GOODIX_CONFIG_MAX_LENGTH);
> +				config, ts->cfg_len);
>  	if (error) {
>  		dev_warn(&ts->client->dev,
>  			 "Error reading config (%d), using
> defaults\n",
> @@ -398,6 +417,8 @@ static int goodix_ts_probe(struct i2c_client
> *client,
>  		return error;
>  	}
>  
> +	ts->cfg_len = goodix_get_cfg_len(id_info);
> +
>  	goodix_read_config(ts);
>  
>  	error = goodix_request_input_dev(ts, version_info, id_info);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ