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

Rafał Miłecki
2022-11-07T16:01:44Z

On 7.11.2022 16:52, Miquel Raynal wrote:
> Hi Dan,
>
> dan.carpenter@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@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?

https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git/log/?h=mtd/next
https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git/commit/?h=mtd/next&id=aec4d5f5ffd0f0092bd9dc21ea90e0bc237d4b74

(committer Miquel Raynal ;) )

>> @@ -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;
>> }
>>