summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python/task-analyzer.py
diff options
context:
space:
mode:
authorJustin Chen <justin.chen@broadcom.com>2026-08-26 13:14:58 -0700
committerKrzysztof Kozlowski <krzk@kernel.org>2026-09-01 17:38:29 +0200
commit7c0b82d087908765c6c7daeb06943e21b78d523e (patch)
tree606e883abc5846843a3d5a50d578c22c5378ea1c /tools/perf/scripts/python/task-analyzer.py
parentcee9395acd8043be0644b25c34bfa86623f2b935 (diff)
memory: brcmstb_dpfe: Fix out-of-bounds access due to DCPU offset
On API v1/v2 boards, the DCPU coprocessor can steer kernel readl_relaxed() and writel_relaxed() to any address within 256 MB of the ioremapped DPFE dmem or regs base. The DCPU firmware provides a 28-bit offset which the driver adds to the ioremap base without any bounds checking in get_msg_ptr(). This allows a compromised DCPU firmware to trick the host kernel into reading or writing arbitrary memory-mapped I/O registers in vmalloc space. When combined with a root-writable sysfs file like dpfe_refresh, it provides an arbitrary MMIO write primitive. Similarly, world-readable sysfs files can be used to leak other devices' register contents. Fix this by recording the resource_size() of the dmem and regs ioremaps at probe time, and rejecting any offset that, along with the largest field accessed (DRAM_VENDOR_ERROR + sizeof(u32)), exceeds the recorded mapping size. Fixes: fee5f1ef6cf7 ("memory: brcmstb: dpfe: support new way of passing data from the DCPU") Cc: stable@vger.kernel.org Signed-off-by: Justin Chen <justin.chen@broadcom.com> Assisted-by: Gemini:gemini-3.1-pro-preview cursor Signed-off-by: Danesh Petigara <danesh.petigara@broadcom.com> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> Link: https://patch.msgid.link/20260826201500.3000125-2-danesh.petigara@broadcom.com Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/task-analyzer.py')
0 files changed, 0 insertions, 0 deletions