[PATCH] mtd: parsers: tplink_safeloader: fix uninitialized variable bug

Miquel Raynal miquel.raynal at bootlin.com
Mon Nov 7 07:52:38 PST 2022


Hi Dan,

dan.carpenter at oracle.com wrote on Tue, 25 Oct 2022 18:34:24 +0300:

> On 64 bit systems, the highest 32 bits of the "offset" variable are
> not initialized.  Also the existing code is not endian safe (it will
> fail on big endian systems).  Change the type of "offset" to a u32.
> 
> Fixes: aec4d5f5ffd0 ("mtd: parsers: add TP-Link SafeLoader partitions table parser")
> Signed-off-by: Dan Carpenter <dan.carpenter at oracle.com>
> ---
>  drivers/mtd/parsers/tplink_safeloader.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/mtd/parsers/tplink_safeloader.c b/drivers/mtd/parsers/tplink_safeloader.c
> index 23584a477391..f601e7bd8627 100644
> --- a/drivers/mtd/parsers/tplink_safeloader.c
> +++ b/drivers/mtd/parsers/tplink_safeloader.c

I am sorry but I don't have this file in my tree, what kernel are you
using?

> @@ -23,8 +23,8 @@ static void *mtd_parser_tplink_safeloader_read_table(struct mtd_info *mtd)
>  	struct safeloader_cmn_header hdr;
>  	struct device_node *np;
>  	size_t bytes_read;
> -	size_t offset;
>  	size_t size;
> +	u32 offset;
>  	char *buf;
>  	int err;
>  
> @@ -34,14 +34,14 @@ static void *mtd_parser_tplink_safeloader_read_table(struct mtd_info *mtd)
>  	else
>  		np = of_get_child_by_name(np, "partitions");
>  
> -	if (of_property_read_u32(np, "partitions-table-offset", (u32 *)&offset)) {
> +	if (of_property_read_u32(np, "partitions-table-offset", &offset)) {
>  		pr_err("Failed to get partitions table offset\n");
>  		goto err_put;
>  	}
>  
>  	err = mtd_read(mtd, offset, sizeof(hdr), &bytes_read, (uint8_t *)&hdr);
>  	if (err && !mtd_is_bitflip(err)) {
> -		pr_err("Failed to read from %s at 0x%zx\n", mtd->name, offset);
> +		pr_err("Failed to read from %s at 0x%x\n", mtd->name, offset);
>  		goto err_put;
>  	}
>  


Thanks,
Miquèl



More information about the linux-mtd mailing list