CVE-2025-37869 (GCVE-0-2025-37869)
Vulnerability from cvelistv5
Published
2025-05-09 06:43
Modified
2026-08-05 11:57
Summary
In the Linux kernel, the following vulnerability has been resolved: drm/xe: Use local fence in error path of xe_migrate_clear The intent of the error path in xe_migrate_clear is to wait on locally generated fence and then return. The code is waiting on m->fence which could be the local fence but this is only stable under the job mutex leading to a possible UAF. Fix code to wait on local fence. (cherry picked from commit 762b7e95362170b3e13a8704f38d5e47eca4ba74)
Impacted products
Vendor Product Version
Linux Linux Version: dd08ebf6c3525a7ea2186e636df064ea47281987
Version: dd08ebf6c3525a7ea2186e636df064ea47281987
Version: dd08ebf6c3525a7ea2186e636df064ea47281987
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/xe/xe_migrate.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "2ac5f466f62892a7d1ac2d1a3eb6cd14efbe2f2d",
              "status": "affected",
              "version": "dd08ebf6c3525a7ea2186e636df064ea47281987",
              "versionType": "git"
            },
            {
              "lessThan": "dc712938aa26b001f448d5e93f59d57fa80f2dbd",
              "status": "affected",
              "version": "dd08ebf6c3525a7ea2186e636df064ea47281987",
              "versionType": "git"
            },
            {
              "lessThan": "20659d3150f1a2a258a173fe011013178ff2a197",
              "status": "affected",
              "version": "dd08ebf6c3525a7ea2186e636df064ea47281987",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/xe/xe_migrate.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.8"
            },
            {
              "lessThan": "6.8",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.25",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.14.*",
              "status": "unaffected",
              "version": "6.14.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.15",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.25",
                  "versionStartIncluding": "6.8",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.14.4",
                  "versionStartIncluding": "6.8",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.15",
                  "versionStartIncluding": "6.8",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/xe: Use local fence in error path of xe_migrate_clear\n\nThe intent of the error path in xe_migrate_clear is to wait on locally\ngenerated fence and then return. The code is waiting on m-\u003efence which\ncould be the local fence but this is only stable under the job mutex\nleading to a possible UAF. Fix code to wait on local fence.\n\n(cherry picked from commit 762b7e95362170b3e13a8704f38d5e47eca4ba74)"
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerable path is reached only through local DRM ioctls (XE_GEM_CREATE / XE_VM_BIND / XE_EXEC) on /dev/dri/renderD*, which drive TTM BO moves into xe_bo_move() \u2192 xe_migrate_clear(). There is no network or remote-peer input path into this code.\nAC:L - The attacker controls both sides of the race \u2014 it forces the err_sync path deterministically by filling the kernel_bb_pool and signalling the thread blocked in the interruptible drm_suballoc_insert() wait, while concurrent threads churn the tile-global m-\u003efence via other BO moves. Because dma_fence_wait() holds no reference for the full blocking wait, the free-and-reuse window is milliseconds-to-seconds wide rather than a few instructions.\nPR:L - All xe ioctls involved are DRM_RENDER_ALLOW, so any local unprivileged user (or sandboxed/containerized app) with render-node access \u2014 the default for logged-in desktop users via logind ACLs and for graphics-group apps on Android/embedded Intel Xe systems \u2014 can reach it. No capabilities or root are needed.\nUI:N - The attacking process performs the GEM allocations, concurrent migrations and signal delivery entirely on its own. No action by another user or victim application is required.\nS:U - The use-after-free corrupts kernel heap memory within the same host kernel security authority; there is no VM, IOMMU or sandbox boundary crossed by the defect itself.\nC:H - The freed dma_fence is dereferenced for ops, flags and lock, giving a read primitive over reclaimed slab memory whose contents the attacker can groom via heap spraying, and stale/reused fence state can be observed. Per UAF guidance this is High.\nI:H - dma_fence_default_wait() links a callback into the freed object\u0027s cb_list under its lock, writing pointers into memory that may already belong to another allocation, and dma_fence_wait_timeout() performs an indirect call through ops-\u003ewait read from freed memory \u2014 a control-flow hijack primitive.\nA:H - Dereferencing a freed drm_sched_fence reliably produces an oops/panic (or slab corruption) even when not weaponized, and if the fence is freed while the thread sleeps it will never be signalled, hanging the task with GPU migration state held."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:57:55.564Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/2ac5f466f62892a7d1ac2d1a3eb6cd14efbe2f2d"
        },
        {
          "url": "https://git.kernel.org/stable/c/dc712938aa26b001f448d5e93f59d57fa80f2dbd"
        },
        {
          "url": "https://git.kernel.org/stable/c/20659d3150f1a2a258a173fe011013178ff2a197"
        }
      ],
      "title": "drm/xe: Use local fence in error path of xe_migrate_clear",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-37869",
    "datePublished": "2025-05-09T06:43:58.083Z",
    "dateReserved": "2025-04-16T04:51:23.959Z",
    "dateUpdated": "2026-08-05T11:57:55.564Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…