CVE-2026-53161
Severity CVSS v4.0:
Pending analysis
Type:
CWE-416
Use After Free
Publication date:
25/06/2026
Last modified:
06/07/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
misc: fastrpc: fix use-after-free of fastrpc_user in workqueue context<br />
<br />
There is a race between fastrpc_device_release() and the workqueue<br />
that processes DSP responses. When the user closes the file descriptor,<br />
fastrpc_device_release() frees the fastrpc_user structure. Concurrently,<br />
an in-flight DSP invocation can complete and fastrpc_rpmsg_callback()<br />
schedules context cleanup via schedule_work(&ctx->put_work). If the<br />
workqueue runs fastrpc_context_free() in parallel with or after<br />
fastrpc_device_release() has freed the user structure, it dereferences<br />
the freed fastrpc_user. Depending on the state of the context at the<br />
time of the race, any one of the following accesses can be hit:<br />
<br />
1. fastrpc_buf_free() calls fastrpc_ipa_to_dma_addr(buf->fl->cctx, ...)<br />
to strip the SID bits from the stored IOVA before passing the<br />
physical address to dma_free_coherent().<br />
<br />
2. fastrpc_free_map() reads map->fl->cctx->vmperms[0].vmid to<br />
reconstruct the source permission bitmask needed for the<br />
qcom_scm_assign_mem() call that returns memory from the DSP VM<br />
back to HLOS.<br />
<br />
3. fastrpc_free_map() acquires map->fl->lock to safely remove the<br />
map node from the fl->maps list.<br />
<br />
The resulting use-after-free manifests as:<br />
<br />
pc : fastrpc_buf_free+0x38/0x80 [fastrpc]<br />
lr : fastrpc_context_free+0xa8/0x1b0 [fastrpc]<br />
fastrpc_context_free+0xa8/0x1b0 [fastrpc]<br />
fastrpc_context_put_wq+0x78/0xa0 [fastrpc]<br />
process_one_work+0x180/0x450<br />
worker_thread+0x26c/0x388<br />
<br />
Add kref-based reference counting to fastrpc_user. Have each invoke<br />
context take a reference on the user at allocation time and release it<br />
when the context is freed. Release the initial reference in<br />
fastrpc_device_release() at file close. Move the teardown of the user<br />
structure — freeing pending contexts, maps, mmaps, and the channel<br />
context reference — into the kref release callback fastrpc_user_free(),<br />
so that it runs only when the last reference is dropped, regardless of<br />
whether that happens at device close or after the final in-flight<br />
context completes.
Impact
Base Score 3.x
7.80
Severity 3.x
HIGH
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.1 (including) | 5.10.259 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.210 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.176 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.143 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.12.94 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (including) | 6.18.36 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.19 (including) | 7.0.13 (excluding) |
| cpe:2.3:o:linux:linux_kernel:7.1:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc5:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc6:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc7:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/5278ccd357e0d7aeeb1e76c0f3e0e02894a9897c
- https://git.kernel.org/stable/c/c6e5c2be09f814377d7f1ce97370a5b7b3e02814
- https://git.kernel.org/stable/c/d42679eef34dd590b694ce3b666c5e2ba10cd4bf
- https://git.kernel.org/stable/c/df08fadcf0e5f3708365ec3b6d30b5aafd98bea1
- https://git.kernel.org/stable/c/e1e3a05efe5954d5bad01157d79429d39a67a7ae
- https://git.kernel.org/stable/c/e85eb5feca8e254905ffa6c57a3c99c89a674a0f
- https://git.kernel.org/stable/c/ecea4967c2bff92c2fafbc59893f711b39f7b152
- https://git.kernel.org/stable/c/fbe0947420eec18a84638d29468c2d563ce4e6a3



