CVE-2025-71130
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
14/01/2026
Last modified:
14/01/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
drm/i915/gem: Zero-initialize the eb.vma array in i915_gem_do_execbuffer<br />
<br />
Initialize the eb.vma array with values of 0 when the eb structure is<br />
first set up. In particular, this sets the eb->vma[i].vma pointers to<br />
NULL, simplifying cleanup and getting rid of the bug described below.<br />
<br />
During the execution of eb_lookup_vmas(), the eb->vma array is<br />
successively filled up with struct eb_vma objects. This process includes<br />
calling eb_add_vma(), which might fail; however, even in the event of<br />
failure, eb->vma[i].vma is set for the currently processed buffer.<br />
<br />
If eb_add_vma() fails, eb_lookup_vmas() returns with an error, which<br />
prompts a call to eb_release_vmas() to clean up the mess. Since<br />
eb_lookup_vmas() might fail during processing any (possibly not first)<br />
buffer, eb_release_vmas() checks whether a buffer&#39;s vma is NULL to know<br />
at what point did the lookup function fail.<br />
<br />
In eb_lookup_vmas(), eb->vma[i].vma is set to NULL if either the helper<br />
function eb_lookup_vma() or eb_validate_vma() fails. eb->vma[i+1].vma is<br />
set to NULL in case i915_gem_object_userptr_submit_init() fails; the<br />
current one needs to be cleaned up by eb_release_vmas() at this point,<br />
so the next one is set. If eb_add_vma() fails, neither the current nor<br />
the next vma is set to NULL, which is a source of a NULL deref bug<br />
described in the issue linked in the Closes tag.<br />
<br />
When entering eb_lookup_vmas(), the vma pointers are set to the slab<br />
poison value, instead of NULL. This doesn&#39;t matter for the actual<br />
lookup, since it gets overwritten anyway, however the eb_release_vmas()<br />
function only recognizes NULL as the stopping value, hence the pointers<br />
are being set to NULL as they go in case of intermediate failure. This<br />
patch changes the approach to filling them all with NULL at the start<br />
instead, rather than handling that manually during failure.<br />
<br />
(cherry picked from commit 08889b706d4f0b8d2352b7ca29c2d8df4d0787cd)
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/0336188cc85d0eab8463bd1bbd4ded4e9602de8b
- https://git.kernel.org/stable/c/24d55ac8e31d2f8197bfad71ffcb3bae21ed7117
- https://git.kernel.org/stable/c/25d69e07770745992387c016613fd7ac8eaf9893
- https://git.kernel.org/stable/c/4fe2bd195435e71c117983d87f278112c5ab364c
- https://git.kernel.org/stable/c/63f23aa2fbb823c8b15a29269fde220d227ce5b3



