{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2025-71130", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2026-01-13T15:30:19.655Z", "datePublished": "2026-01-14T15:07:46.508Z", "dateUpdated": "2026-08-05T12:12:15.552Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-05T12:12:15.552Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/i915/gem: Zero-initialize the eb.vma array in i915_gem_do_execbuffer\n\nInitialize the eb.vma array with values of 0 when the eb structure is\nfirst set up. In particular, this sets the eb->vma[i].vma pointers to\nNULL, simplifying cleanup and getting rid of the bug described below.\n\nDuring the execution of eb_lookup_vmas(), the eb->vma array is\nsuccessively filled up with struct eb_vma objects. This process includes\ncalling eb_add_vma(), which might fail; however, even in the event of\nfailure, eb->vma[i].vma is set for the currently processed buffer.\n\nIf eb_add_vma() fails, eb_lookup_vmas() returns with an error, which\nprompts a call to eb_release_vmas() to clean up the mess. Since\neb_lookup_vmas() might fail during processing any (possibly not first)\nbuffer, eb_release_vmas() checks whether a buffer's vma is NULL to know\nat what point did the lookup function fail.\n\nIn eb_lookup_vmas(), eb->vma[i].vma is set to NULL if either the helper\nfunction eb_lookup_vma() or eb_validate_vma() fails. eb->vma[i+1].vma is\nset to NULL in case i915_gem_object_userptr_submit_init() fails; the\ncurrent one needs to be cleaned up by eb_release_vmas() at this point,\nso the next one is set. If eb_add_vma() fails, neither the current nor\nthe next vma is set to NULL, which is a source of a NULL deref bug\ndescribed in the issue linked in the Closes tag.\n\nWhen entering eb_lookup_vmas(), the vma pointers are set to the slab\npoison value, instead of NULL. This doesn't matter for the actual\nlookup, since it gets overwritten anyway, however the eb_release_vmas()\nfunction only recognizes NULL as the stopping value, hence the pointers\nare being set to NULL as they go in case of intermediate failure. This\npatch changes the approach to filling them all with NULL at the start\ninstead, rather than handling that manually during failure.\n\n(cherry picked from commit 08889b706d4f0b8d2352b7ca29c2d8df4d0787cd)" } ], "metrics": [ { "cvssV3_1": { "version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 7.8, "baseSeverity": "HIGH" }, "scenarios": [ { "lang": "en", "value": "AV:L - The vulnerable path is reached through DRM_IOCTL_I915_GEM_EXECBUFFER2 on a local i915 render-device file descriptor. It is not remotely or physically reachable.\nAC:L - The attacker directly controls the batch ordering, object count, and invalid batch bounds that make eb_add_vma() fail, with no race required. Same-sized execbuffer allocations can also prime the stale slot, and attempts can be repeated.\nPR:L - The ioctl is registered with DRM_RENDER_ALLOW and requires neither DRM authentication nor CAP_SYS_ADMIN, master status, or another capability. An ordinary user with access to the commonly exposed render node can invoke it.\nUI:N - Exploitation requires only attacker-controlled open and ioctl operations; no action by another user is necessary.\nS:U - Compromise remains within the host kernel's security authority and does not inherently cross a VM, IOMMU, or other distinct security scope.\nC:H - The uninitialized slot can contain a stale live i915_vma pointer, causing unearned GEM-object reference releases and a resulting use-after-free. Such attacker-shaped kernel UAF conditions can enable disclosure of arbitrary kernel memory.\nI:H - Repeated cleanup of a primed stale VMA corrupts GEM reference accounting and can produce a live-object use-after-free. Heap replacement and subsequent object operations can plausibly provide arbitrary kernel-memory modification or control-flow hijacking.\nA:H - The public reproducer causes kernel oopses and invalid refcount writes, while interrupted cleanup leaks execbuffer, context, and timeline allocations. Repeated triggering can exhaust memory, hang the GPU, or crash the system." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c" ], "versions": [ { "version": "544460c33821b44c2f0c643121303c3dc3f66ef1", "lessThan": "25d69e07770745992387c016613fd7ac8eaf9893", "status": "affected", "versionType": "git" }, { "version": "544460c33821b44c2f0c643121303c3dc3f66ef1", "lessThan": "0336188cc85d0eab8463bd1bbd4ded4e9602de8b", "status": "affected", "versionType": "git" }, { "version": "544460c33821b44c2f0c643121303c3dc3f66ef1", "lessThan": "24d55ac8e31d2f8197bfad71ffcb3bae21ed7117", "status": "affected", "versionType": "git" }, { "version": "544460c33821b44c2f0c643121303c3dc3f66ef1", "lessThan": "63f23aa2fbb823c8b15a29269fde220d227ce5b3", "status": "affected", "versionType": "git" }, { "version": "544460c33821b44c2f0c643121303c3dc3f66ef1", "lessThan": "4fe2bd195435e71c117983d87f278112c5ab364c", "status": "affected", "versionType": "git" } ] }, { "product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c" ], "versions": [ { "version": "5.16", "status": "affected" }, { "version": "0", "lessThan": "5.16", "status": "unaffected", "versionType": "semver" }, { "version": "6.1.160", "lessThanOrEqual": "6.1.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.6.120", "lessThanOrEqual": "6.6.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.12.64", "lessThanOrEqual": "6.12.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.18.4", "lessThanOrEqual": "6.18.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.19", "lessThanOrEqual": "*", "status": "unaffected", "versionType": "original_commit_for_fix" } ] } ], "cpeApplicability": [ { "nodes": [ { "operator": "OR", "negate": false, "cpeMatch": [ { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.16", "versionEndExcluding": "6.1.160" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.16", "versionEndExcluding": "6.6.120" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.16", "versionEndExcluding": "6.12.64" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.16", "versionEndExcluding": "6.18.4" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.16", "versionEndExcluding": "6.19" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/25d69e07770745992387c016613fd7ac8eaf9893" }, { "url": "https://git.kernel.org/stable/c/0336188cc85d0eab8463bd1bbd4ded4e9602de8b" }, { "url": "https://git.kernel.org/stable/c/24d55ac8e31d2f8197bfad71ffcb3bae21ed7117" }, { "url": "https://git.kernel.org/stable/c/63f23aa2fbb823c8b15a29269fde220d227ce5b3" }, { "url": "https://git.kernel.org/stable/c/4fe2bd195435e71c117983d87f278112c5ab364c" } ], "title": "drm/i915/gem: Zero-initialize the eb.vma array in i915_gem_do_execbuffer", "x_generator": { "engine": "bippy-1.2.0" } } } }