public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: C Cheng <C.Cheng@mediatek.com>, Bo Ye <bo.ye@mediatek.com>,
	AngeloGioacchino Del Regno
	<angelogioacchino.delregno@collabora.com>,
	"Rafael J . Wysocki" <rafael.j.wysocki@intel.com>,
	Sasha Levin <sashal@kernel.org>,
	rafael@kernel.org, daniel.lezcano@linaro.org,
	matthias.bgg@gmail.com, linux-pm@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org
Subject: [PATCH AUTOSEL 5.15 06/20] cpuidle: Avoid potential overflow in integer multiplication
Date: Fri, 29 Mar 2024 08:32:54 -0400	[thread overview]
Message-ID: <20240329123316.3085691-6-sashal@kernel.org> (raw)
In-Reply-To: <20240329123316.3085691-1-sashal@kernel.org>

From: C Cheng <C.Cheng@mediatek.com>

[ Upstream commit 88390dd788db485912ee7f9a8d3d56fc5265d52f ]

In detail:

In C language, when you perform a multiplication operation, if
both operands are of int type, the multiplication operation is
performed on the int type, and then the result is converted to
the target type. This means that if the product of int type
multiplication exceeds the range that int type can represent,
an overflow will occur even if you store the result in a
variable of int64_t type.

For a multiplication of two int values, it is better to use
mul_u32_u32() rather than s->exit_latency_ns = s->exit_latency *
NSEC_PER_USEC to avoid potential overflow happenning.

Signed-off-by: C Cheng <C.Cheng@mediatek.com>
Signed-off-by: Bo Ye <bo.ye@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
[ rjw: New subject ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/cpuidle/driver.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/cpuidle/driver.c b/drivers/cpuidle/driver.c
index f70aa17e2a8e0..c594e28adddf3 100644
--- a/drivers/cpuidle/driver.c
+++ b/drivers/cpuidle/driver.c
@@ -16,6 +16,7 @@
 #include <linux/cpumask.h>
 #include <linux/tick.h>
 #include <linux/cpu.h>
+#include <linux/math64.h>
 
 #include "cpuidle.h"
 
@@ -185,7 +186,7 @@ static void __cpuidle_driver_init(struct cpuidle_driver *drv)
 			s->target_residency_ns = 0;
 
 		if (s->exit_latency > 0)
-			s->exit_latency_ns = s->exit_latency * NSEC_PER_USEC;
+			s->exit_latency_ns = mul_u32_u32(s->exit_latency, NSEC_PER_USEC);
 		else if (s->exit_latency_ns < 0)
 			s->exit_latency_ns =  0;
 	}
-- 
2.43.0


  parent reply	other threads:[~2024-03-29 12:33 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-29 12:32 [PATCH AUTOSEL 5.15 01/20] wifi: ath9k: fix LNA selection in ath_ant_try_scan() Sasha Levin
2024-03-29 12:32 ` [PATCH AUTOSEL 5.15 02/20] batman-adv: Return directly after a failed batadv_dat_select_candidates() in batadv_dat_forward_data() Sasha Levin
2024-03-29 12:32 ` [PATCH AUTOSEL 5.15 03/20] batman-adv: Improve exception handling in batadv_throw_uevent() Sasha Levin
2024-03-29 12:32 ` [PATCH AUTOSEL 5.15 04/20] VMCI: Fix memcpy() run-time warning in dg_dispatch_as_host() Sasha Levin
2024-03-29 12:32 ` [PATCH AUTOSEL 5.15 05/20] panic: Flush kernel log buffer at the end Sasha Levin
2024-03-29 12:32 ` Sasha Levin [this message]
2024-03-29 12:32 ` [PATCH AUTOSEL 5.15 07/20] arm64: dts: rockchip: fix rk3328 hdmi ports node Sasha Levin
2024-03-29 12:32 ` [PATCH AUTOSEL 5.15 08/20] arm64: dts: rockchip: fix rk3399 " Sasha Levin
2024-03-29 12:32 ` [PATCH AUTOSEL 5.15 09/20] ionic: set adminq irq affinity Sasha Levin
2024-03-29 12:32 ` [PATCH AUTOSEL 5.15 10/20] pstore/zone: Add a null pointer check to the psz_kmsg_read Sasha Levin
2024-03-29 12:32 ` [PATCH AUTOSEL 5.15 11/20] tools/power x86_energy_perf_policy: Fix file leak in get_pkg_num() Sasha Levin
2024-03-29 12:33 ` [PATCH AUTOSEL 5.15 12/20] net: pcs: xpcs: Return EINVAL in the internal methods Sasha Levin
2024-03-29 12:33 ` [PATCH AUTOSEL 5.15 13/20] wifi: ath11k: decrease MHI channel buffer length to 8KB Sasha Levin
2024-03-29 12:33 ` [PATCH AUTOSEL 5.15 14/20] sparc: vdso: Disable UBSAN instrumentation Sasha Levin
2024-03-29 12:33 ` [PATCH AUTOSEL 5.15 15/20] sh: Fix build with CONFIG_UBSAN=y Sasha Levin
2024-03-29 12:33 ` [PATCH AUTOSEL 5.15 16/20] btrfs: handle chunk tree lookup error in btrfs_relocate_sys_chunks() Sasha Levin
2024-03-29 12:33 ` [PATCH AUTOSEL 5.15 17/20] btrfs: export: handle invalid inode or root reference in btrfs_get_parent() Sasha Levin
2024-03-29 12:33 ` [PATCH AUTOSEL 5.15 18/20] btrfs: send: handle path ref underflow in header iterate_inode_ref() Sasha Levin
2024-03-29 12:33 ` [PATCH AUTOSEL 5.15 19/20] net/smc: reduce rtnl pressure in smc_pnet_create_pnetids_list() Sasha Levin
2024-03-29 12:33 ` [PATCH AUTOSEL 5.15 20/20] Bluetooth: btintel: Fix null ptr deref in btintel_read_version Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240329123316.3085691-6-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=C.Cheng@mediatek.com \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=bo.ye@mediatek.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=matthias.bgg@gmail.com \
    --cc=rafael.j.wysocki@intel.com \
    --cc=rafael@kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox