diff options
| author | Leo Yan <leo.yan@arm.com> | 2025-09-17 18:41:39 +0100 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2025-10-15 11:56:25 +0200 |
| commit | 7500384d3c9587593d75ded3b006835e7aa73ef8 (patch) | |
| tree | ad6bb49f6d7372e0e29e53de648f7c2319e896e9 /drivers/perf | |
| parent | e7143a65f6d1db69f746780458e8c9b9372db521 (diff) | |
| download | linux-7500384d3c9587593d75ded3b006835e7aa73ef8.tar.gz linux-7500384d3c9587593d75ded3b006835e7aa73ef8.tar.bz2 linux-7500384d3c9587593d75ded3b006835e7aa73ef8.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.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/perf/arm_spe_pmu.c b/drivers/perf/arm_spe_pmu.c index 00e3a637f7b6..815bf2e2dffa 100644 --- a/drivers/perf/arm_spe_pmu.c +++ b/drivers/perf/arm_spe_pmu.c @@ -95,7 +95,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; |
