KernelScan.io

HIGH Introduced in 2.6.39

amba-pl011 DMA UAF

CVE-2026-80737

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI6.9MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: serial: amba-pl011: synchronize DMA teardown dmaengine_terminate_all() does not wait for a running callback, so the TX callback can still touch the TX buffer after it is freed. The RX poll timer reads the RX buffers without the port lock. Switch to dmaengine_terminate_sync() and delete the RX timer before freeing the buffers.

02

Engine v0.6.0

Risk summary

A race condition in the PL011 serial driver's DMA teardown path allows a local user to trigger a use-after-free when the TX DMA callback accesses a freed buffer or the RX poll timer reads freed RX buffers. This can lead to memory corruption, potentially resulting in privilege escalation or a kernel panic. The vulnerability requires local access and specific hardware using the AMBA PL011 UART with DMA enabled.

Affecteddrivers/tty/serial/amba-pl011.c (amba-pl011 serial driver)

Vulnerability analysis

During DMA teardown in the PL011 serial driver, the TX DMA channel is terminated without waiting for an in-flight callback to finish, so the callback can still access the TX buffer after it has been freed. Separately, the RX poll timer can continue running and read RX buffers that are being freed without proper synchronization. The fix switches to a synchronous DMA termination that waits for callbacks to complete, and deletes the RX poll timer before freeing the RX buffers. The vulnerable code path is reachable locally on systems using AMBA PL011 UART hardware with DMA enabled, requiring no special privileges beyond local access to the serial device.

03

BranchIntroducedFixed inPatch commit
5.102.6.395.10.267a38fae9d212e
6.12.6.396.1.185f70c9d4fba46
6.122.6.396.12.1069f6989e477f0
6.182.6.396.18.455974cb66681e
7.12.6.397.1.9fdfb46c38724
mainline2.6.397.2440915499231
5.152.6.395.15.21844bd0ecc3444
6.62.6.396.6.154c8c8e895f65f
cip/5.102.6.395.10.268-cip77a38fae9d212e
cip/5.10-rt2.6.395.10.268-cip77-rt34a38fae9d212e
cip/6.12.6.396.1.187-cip60f70c9d4fba46
cip/6.122.6.396.12.108-cip319f6989e477f0