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:	Tue, 9 Aug 2016 20:54:29 +0200
From:	Sebastian Reichel <sre@...nel.org>
To:	Sven Van Asbroeck <thesven73@...il.com>
Cc:	linux-kernel@...r.kernel.org, linux-pm@...r.kernel.org,
	Jonghwa Lee <jonghwa3.lee@...sung.com>,
	Krzysztof Kozlowski <k.kozlowski@...sung.com>
Subject: Re: [PATCH] max17042_battery: fix model download bug.

Hi,

[adding some people to CC]

On Wed, Aug 03, 2016 at 10:03:46AM -0400, Sven Van Asbroeck wrote:
> The device's model download function returns the model data as
> an array of u32s, which is later compared to the reference
> model data. However, since the latter is an array of u16s,
> the comparison does not happen correctly, and model verification
> fails. This in turn breaks the POR initialization sequence.

Patch looks ok, except for missing Fixes. I guess it should be
"Fixes: 39e7213edc4f3". I will wait with queuing it for a few
days giving Samsung people a chance to reply.

-- Sebastian

>  drivers/power/max17042_battery.c | 15 +++++++++------
>  1 file changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/power/max17042_battery.c b/drivers/power/max17042_battery.c
> index 9c65f13..da7a75f 100644
> --- a/drivers/power/max17042_battery.c
> +++ b/drivers/power/max17042_battery.c
> @@ -457,13 +457,16 @@ static inline void
> max17042_write_model_data(struct max17042_chip *chip,
>  }
> 
>  static inline void max17042_read_model_data(struct max17042_chip *chip,
> -                    u8 addr, u32 *data, int size)
> +                    u8 addr, u16 *data, int size)
>  {
>      struct regmap *map = chip->regmap;
>      int i;
> +    u32 tmp;
> 
> -    for (i = 0; i < size; i++)
> -        regmap_read(map, addr + i, &data[i]);
> +    for (i = 0; i < size; i++) {
> +        regmap_read(map, addr + i, &tmp);
> +        data[i] = (u16)tmp;
> +    }
>  }
> 
>  static inline int max17042_model_data_compare(struct max17042_chip *chip,
> @@ -486,7 +489,7 @@ static int max17042_init_model(struct max17042_chip *chip)
>  {
>      int ret;
>      int table_size = ARRAY_SIZE(chip->pdata->config_data->cell_char_tbl);
> -    u32 *temp_data;
> +    u16 *temp_data;
> 
>      temp_data = kcalloc(table_size, sizeof(*temp_data), GFP_KERNEL);
>      if (!temp_data)
> @@ -501,7 +504,7 @@ static int max17042_init_model(struct max17042_chip *chip)
>      ret = max17042_model_data_compare(
>          chip,
>          chip->pdata->config_data->cell_char_tbl,
> -        (u16 *)temp_data,
> +        temp_data,
>          table_size);
> 
>      max10742_lock_model(chip);
> @@ -514,7 +517,7 @@ static int max17042_verify_model_lock(struct
> max17042_chip *chip)
>  {
>      int i;
>      int table_size = ARRAY_SIZE(chip->pdata->config_data->cell_char_tbl);
> -    u32 *temp_data;
> +    u16 *temp_data;
>      int ret = 0;
> 
>      temp_data = kcalloc(table_size, sizeof(*temp_data), GFP_KERNEL);
> -- 
> 1.9.1

Download attachment "signature.asc" of type "application/pgp-signature" (820 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ