]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ACPI: LPIT: Avoid u32 multiplication overflow
authorNikita Kiryushin <kiryushin@ancud.ru>
Thu, 9 Nov 2023 18:08:59 +0000 (21:08 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jan 2024 22:52:33 +0000 (14:52 -0800)
[ Upstream commit 56d2eeda87995245300836ee4dbd13b002311782 ]

In lpit_update_residency() there is a possibility of overflow
in multiplication, if tsc_khz is large enough (> UINT_MAX/1000).

Change multiplication to mul_u32_u32().

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

Fixes: eeb2d80d502a ("ACPI / LPIT: Add Low Power Idle Table (LPIT) support")
Signed-off-by: Nikita Kiryushin <kiryushin@ancud.ru>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/acpi/acpi_lpit.c

index 48e5059d67cabdd88cb4bc655e03b6194294fa70..7de59730030c227bba53e8e5031303f1163833d9 100644 (file)
@@ -98,7 +98,7 @@ static void lpit_update_residency(struct lpit_residency_info *info,
                                 struct acpi_lpit_native *lpit_native)
 {
        info->frequency = lpit_native->counter_frequency ?
-                               lpit_native->counter_frequency : tsc_khz * 1000;
+                               lpit_native->counter_frequency : mul_u32_u32(tsc_khz, 1000U);
        if (!info->frequency)
                info->frequency = 1;