diff options
| author | Puranjay Mohan <puranjay@kernel.org> | 2026-08-10 06:35:34 -0700 |
|---|---|---|
| committer | Peter Zijlstra <peterz@infradead.org> | 2026-09-23 11:48:35 +0200 |
| commit | 36bb85cf36cab15fb611cb44b78a5df06e4e69a2 (patch) | |
| tree | 75d5bb5e81dc54b2a882ed62b5b9197e2516b8fe /include/soc | |
| parent | cca4980630b3c7a85f53cb43c6018184ce5d4e37 (diff) | |
| download | linux-stable-36bb85cf36cab15fb611cb44b78a5df06e4e69a2.tar.gz linux-stable-36bb85cf36cab15fb611cb44b78a5df06e4e69a2.zip | |
perf/core: Fix NULL pmu_ctx passed to pmu->sched_task()
perf_pmu_sched_task() returns early when cpuctx->task_ctx is set, and
cpc->task_epc is only non-NULL while a task context is scheduled in on
this CPU. __perf_pmu_sched_task() therefore always passes NULL:
Unable to handle kernel NULL pointer dereference at virtual address 00
pc : armv8pmu_sched_task+0x14/0x50
Call trace:
armv8pmu_sched_task+0x14/0x50 (P)
perf_pmu_sched_task+0xac/0x108
__perf_event_task_sched_out+0x6c/0xe0
Pass &cpc->epc instead, the CPU-wide context for this PMU, which the
function already dereferences a few lines up to find pmu.
armv8pmu_sched_task() is the only in-tree implementation that
dereferences the argument, and it only reads ->pmu, so the oops needs
BRBE, added in v6.17.
Fixes: bd2756811766 ("perf: Rewrite core context handling")
Signed-off-by: Puranjay Mohan <puranjay@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Tested-by: Yifan Wu <wuyifan50@huawei.com>
Cc: stable@vger.kernel.org
Link: https://patch.msgid.link/20260810133540.1947118-2-puranjay@kernel.org
Diffstat (limited to 'include/soc')
0 files changed, 0 insertions, 0 deletions
