2023-08-26 13:53:46

by Yu Liao

[permalink] [raw]
Subject: [PATCH v2 1/2] ACPI: NFIT: Fix incorrect calculation of idt size

acpi_nfit_interleave's field 'line_offset' is switched to flexible array [1],
but sizeof_idt() still calculates the size in the form of 1-element array.

Therefore, fix incorrect calculation in sizeof_idt().

[1] https://lore.kernel.org/lkml/2652195.BddDVKsqQX@kreacher/

Fixes: 2a5ab99847bd ("ACPICA: struct acpi_nfit_interleave: Replace 1-element array with flexible array")
Cc: [email protected] # v6.4+
Signed-off-by: Yu Liao <[email protected]>
Reviewed-by: Dave Jiang <[email protected]>
---
v1 -> v2: add Dave's review tag and cc [email protected]
---
drivers/acpi/nfit/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c
index 07204d482968..305f590c54a8 100644
--- a/drivers/acpi/nfit/core.c
+++ b/drivers/acpi/nfit/core.c
@@ -855,7 +855,7 @@ static size_t sizeof_idt(struct acpi_nfit_interleave *idt)
{
if (idt->header.length < sizeof(*idt))
return 0;
- return sizeof(*idt) + sizeof(u32) * (idt->line_count - 1);
+ return sizeof(*idt) + sizeof(u32) * idt->line_count;
}

static bool add_idt(struct acpi_nfit_desc *acpi_desc,
--
2.25.1



2023-09-15 16:27:54

by Ira Weiny

[permalink] [raw]
Subject: Re: [PATCH v2 1/2] ACPI: NFIT: Fix incorrect calculation of idt size

Yu Liao wrote:
> acpi_nfit_interleave's field 'line_offset' is switched to flexible array [1],
> but sizeof_idt() still calculates the size in the form of 1-element array.
>
> Therefore, fix incorrect calculation in sizeof_idt().
>
> [1] https://lore.kernel.org/lkml/2652195.BddDVKsqQX@kreacher/
>
> Fixes: 2a5ab99847bd ("ACPICA: struct acpi_nfit_interleave: Replace 1-element array with flexible array")
> Cc: [email protected] # v6.4+
> Signed-off-by: Yu Liao <[email protected]>
> Reviewed-by: Dave Jiang <[email protected]>

Reviewed-by: Ira Weiny <[email protected]>

> ---
> v1 -> v2: add Dave's review tag and cc [email protected]
> ---
> drivers/acpi/nfit/core.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c
> index 07204d482968..305f590c54a8 100644
> --- a/drivers/acpi/nfit/core.c
> +++ b/drivers/acpi/nfit/core.c
> @@ -855,7 +855,7 @@ static size_t sizeof_idt(struct acpi_nfit_interleave *idt)
> {
> if (idt->header.length < sizeof(*idt))
> return 0;
> - return sizeof(*idt) + sizeof(u32) * (idt->line_count - 1);
> + return sizeof(*idt) + sizeof(u32) * idt->line_count;
> }
>
> static bool add_idt(struct acpi_nfit_desc *acpi_desc,
> --
> 2.25.1
>