]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
acpi/arm64: Adjust error handling procedure in gtdt_parse_timer_block()
authorAleksandr Mishin <amishin@t-argos.ru>
Tue, 27 Aug 2024 10:12:39 +0000 (13:12 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Dec 2024 12:52:46 +0000 (13:52 +0100)
[ Upstream commit 1a9de2f6fda69d5f105dd8af776856a66abdaa64 ]

In case of error in gtdt_parse_timer_block() invalid 'gtdt_frame'
will be used in 'do {} while (i-- >= 0 && gtdt_frame--);' statement block
because do{} block will be executed even if 'i == 0'.

Adjust error handling procedure by replacing 'i-- >= 0' with 'i-- > 0'.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: a712c3ed9b8a ("acpi/arm64: Add memory-mapped timer support in GTDT driver")
Signed-off-by: Aleksandr Mishin <amishin@t-argos.ru>
Acked-by: Hanjun Guo <guohanjun@huawei.com>
Acked-by: Sudeep Holla <sudeep.holla@arm.com>
Acked-by: Aleksandr Mishin <amishin@t-argos.ru>
Link: https://lore.kernel.org/r/20240827101239.22020-1-amishin@t-argos.ru
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/acpi/arm64/gtdt.c

index c0e77c1c8e09d6fa15094b2fff28d1c7bef0aed4..eb6c2d3603874a21fda3f58f149ed8c6d04026fe 100644 (file)
@@ -283,7 +283,7 @@ error:
                if (frame->virt_irq > 0)
                        acpi_unregister_gsi(gtdt_frame->virtual_timer_interrupt);
                frame->virt_irq = 0;
-       } while (i-- >= 0 && gtdt_frame--);
+       } while (i-- > 0 && gtdt_frame--);
 
        return -EINVAL;
 }