---
id: CVE-2026-98477
title: 'perf/core: Fix NULL pmu_ctx passed to pmu->sched_task()'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  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 ta…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= bd27568117664b8b3e259721393df420ed51f57b <
    b5409311b606d536cc485f3706c242c2afa93edb
  - >-
    Linux >= bd27568117664b8b3e259721393df420ed51f57b <
    249a2bd87a0e57dc28f36e992807edc9cae309b5
  - >-
    Linux >= bd27568117664b8b3e259721393df420ed51f57b <
    ec15f6a50183fc01f470af74ad49900fb3731fca
  - >-
    Linux >= bd27568117664b8b3e259721393df420ed51f57b <
    36bb85cf36cab15fb611cb44b78a5df06e4e69a2
  - Linux 6.2
published: '2026-10-18'
updated: '2026-10-18'
sourceUpdated: '2026-10-18T15:15:51.475Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-98477'
references:
  - url: 'https://git.kernel.org/stable/c/b5409311b606d536cc485f3706c242c2afa93edb'
  - url: 'https://git.kernel.org/stable/c/249a2bd87a0e57dc28f36e992807edc9cae309b5'
  - url: 'https://git.kernel.org/stable/c/ec15f6a50183fc01f470af74ad49900fb3731fca'
  - url: 'https://git.kernel.org/stable/c/36bb85cf36cab15fb611cb44b78a5df06e4e69a2'
tags:
  - cve.org
ingestedAt: '2026-10-18T15:45:12.295Z'
---

## Overview

In the Linux kernel, the following vulnerability has been resolved:

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.

## Affected

- `Linux >= bd27568117664b8b3e259721393df420ed51f57b < b5409311b606d536cc485f3706c242c2afa93edb`
- `Linux >= bd27568117664b8b3e259721393df420ed51f57b < 249a2bd87a0e57dc28f36e992807edc9cae309b5`
- `Linux >= bd27568117664b8b3e259721393df420ed51f57b < ec15f6a50183fc01f470af74ad49900fb3731fca`
- `Linux >= bd27568117664b8b3e259721393df420ed51f57b < 36bb85cf36cab15fb611cb44b78a5df06e4e69a2`
- `Linux 6.2`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
