Commit a29fea30 authored by Leo Yan's avatar Leo Yan Committed by Will Deacon
Browse files

perf: arm_spe: Prevent overflow in PERF_IDX2OFF()



Cast nr_pages to unsigned long to avoid overflow when handling large
AUX buffer sizes (>= 2 GiB).

Fixes: d5d9696b ("drivers/perf: Add support for ARMv8.2 Statistical Profiling Extension")
Signed-off-by: default avatarLeo Yan <leo.yan@arm.com>
Signed-off-by: default avatarWill Deacon <will@kernel.org>
parent 105f5687
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -99,7 +99,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;