summaryrefslogtreecommitdiff
path: root/drivers/perf
diff options
context:
space:
mode:
authorLeo Yan <leo.yan@arm.com>2025-09-17 18:41:39 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-10-15 12:03:16 +0200
commite516cfd19b0f4c774a57b17fb43a7f41991f0735 (patch)
tree44635eb75e0473c9a0b47214daceb1aa3c7c1ba3 /drivers/perf
parent637f28a25b1b840dfbc704d2543c7dcb63126239 (diff)
downloadlinux-e516cfd19b0f4c774a57b17fb43a7f41991f0735.tar.gz
linux-e516cfd19b0f4c774a57b17fb43a7f41991f0735.tar.bz2
linux-e516cfd19b0f4c774a57b17fb43a7f41991f0735.zip
perf: arm_spe: Prevent overflow in PERF_IDX2OFF()
[ Upstream commit a29fea30dd93da16652930162b177941abd8c75e ] Cast nr_pages to unsigned long to avoid overflow when handling large AUX buffer sizes (>= 2 GiB). Fixes: d5d9696b0380 ("drivers/perf: Add support for ARMv8.2 Statistical Profiling Extension") Signed-off-by: Leo Yan <leo.yan@arm.com> Signed-off-by: Will Deacon <will@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/perf')
-rw-r--r--drivers/perf/arm_spe_pmu.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/perf/arm_spe_pmu.c b/drivers/perf/arm_spe_pmu.c
index 369e77ad5f13..8f14cb324e01 100644
--- a/drivers/perf/arm_spe_pmu.c
+++ b/drivers/perf/arm_spe_pmu.c
@@ -97,7 +97,8 @@ struct arm_spe_pmu {
#define to_spe_pmu(p) (container_of(p, struct arm_spe_pmu, pmu))
/* Convert a free-running index from perf into an SPE buffer offset */
-#define PERF_IDX2OFF(idx, buf) ((idx) % ((buf)->nr_pages << PAGE_SHIFT))
+#define PERF_IDX2OFF(idx, buf) \
+ ((idx) % ((unsigned long)(buf)->nr_pages << PAGE_SHIFT))
/* Keep track of our dynamic hotplug state */
static enum cpuhp_state arm_spe_pmu_online;