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
5.152.6.395.15.21844bd0ecc3444
6.12.6.396.1.185f70c9d4fba46
6.122.6.396.12.1069f6989e477f0
6.182.6.396.18.455974cb66681e
6.62.6.396.6.154c8c8e895f65f
7.12.6.397.1.9fdfb46c38724
mainline2.6.397.2440915499231
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.1-rt2.6.396.1.189-cip61-rt32f70c9d4fba46
cip/6.122.6.396.12.108-cip319f6989e477f0

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.108-cip31
cip/6.1Fixed in 6.1.187-cip60
cip/6.1-rtFixed in 6.1.189-cip61-rt32
cip/5.10Fixed in 5.10.268-cip77
cip/5.10-rtFixed in 5.10.268-cip77-rt34
cip/4.19Affected — no CIP fix yet (latest 4.19.325-cip136)
cip/4.19-rtAffected — no CIP fix yet (latest 4.19.325-cip136-rt50)
cip/4.4Affected — no CIP fix yet (latest 4.4.302-cip115)
cip/4.4-rtAffected — no CIP fix yet (latest 4.4.302-cip115-rt63)