CVE-2025-38722
Severity CVSS v4.0:
Pending analysis
Type:
CWE-416
Use After Free
Publication date:
04/09/2025
Last modified:
25/11/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
habanalabs: fix UAF in export_dmabuf()<br />
<br />
As soon as we&#39;d inserted a file reference into descriptor table, another<br />
thread could close it. That&#39;s fine for the case when all we are doing is<br />
returning that descriptor to userland (it&#39;s a race, but it&#39;s a userland<br />
race and there&#39;s nothing the kernel can do about it). However, if we<br />
follow fd_install() with any kind of access to objects that would be<br />
destroyed on close (be it the struct file itself or anything destroyed<br />
by its ->release()), we have a UAF.<br />
<br />
dma_buf_fd() is a combination of reserving a descriptor and fd_install().<br />
habanalabs export_dmabuf() calls it and then proceeds to access the<br />
objects destroyed on close. In particular, it grabs an extra reference to<br />
another struct file that will be dropped as part of ->release() for ours;<br />
that "will be" is actually "might have already been".<br />
<br />
Fix that by reserving descriptor before anything else and do fd_install()<br />
only when everything had been set up. As a side benefit, we no longer<br />
have the failure exit with file already created, but reference to<br />
underlying file (as well as ->dmabuf_export_cnt, etc.) not grabbed yet;<br />
unlike dma_buf_fd(), fd_install() can&#39;t fail.
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.16 (including) | 6.12.43 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13 (including) | 6.15.11 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.16 (including) | 6.16.2 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.17:rc1:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page



