From: AL-KERNEL <[email protected]>
To: [email protected]
Subject: [CVE-2025-37869][MODERATE REGULAR] drm/xe: Use local fence in error path of xe_migrate_clear
Date: Mon, 12 Oct 2026 21:01:52 -0400 [thread overview]
Message-ID: <[email protected]> (raw)
CVE: CVE-2025-37869
Priority: MODERATE REGULAR
AL-KERNEL base severity: MODERATE
KPANIC flag: NO
Patch: drm/xe: Use local fence in error path of xe_migrate_clear
Commit: 2ac5f466f62892a7d1ac2d1a3eb6cd14efbe2f2d
Upstream patch: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=2ac5f466f62892a7d1ac2d1a3eb6cd14efbe2f2d
Original CVE announcement: https://lore.kernel.org/linux-cve-announce/?q=CVE-2025-37869
Analysis date: Mon, 12 Oct 2026 21:01:52 -0400
ActionableScore: 3
ActionableScore lower bound: unknown
Actionable bucket: Borderline / manual review recommended
Manual review required: YES
Summary:
No one-sentence report phrase was found.
======================================================================
ABOUT THIS REPORT
======================================================================
The original Linux kernel CVE announcement for CVE-2025-37869 is available here:
https://lore.kernel.org/linux-cve-announce/?q=CVE-2025-37869
The original announcement does not normally provide a security severity
estimate, CVSS assessment, or enough information to determine whether the
reported kernel bug represents a practically relevant security issue.
This report was generated by AL-KERNEL, an AI-assisted Linux kernel
vulnerability analysis system developed by Alexander Larkin. It combines
an autonomous classifier with LLM-assisted technical analysis and a
separate ActionableScore mechanism.
The purpose of this report is to prioritize Linux kernel CVEs before
manual review, identify cases that require prompt investigation, and
support automatic closure of issues that are unlikely to have meaningful
security impact.
Published priority for this report: MODERATE REGULAR
Manual review required: YES
A detailed explanation of the methodology and priority rules is included
at the end of this message.
======================================================================
AL-KERNEL CLASSIFICATION RESULT
======================================================================
CVE-2025-37869 MODERATE https://www.kernelcve.org/list/?q=CVE-2025-37869 CHECK WITH IMPACT FROM ORIG NN LOW | AEGIS IMPACT MODERATE_KPANIC AEGIS_AS=1 LEGACY=MODERATE RESULT=DIFF (independent Legacy and Aegis differ; FINAL: MODERATE, Aegis: MODERATE_KPANIC) Maybe valid. Check manually. Hints by AL-KERNEL: The best (paranoid) CVSS is 'AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H';*CWE-416;CWE-362;CWE-667;Other CVSS 'AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H';BEST CVSS score: '7';DESCR 'A race based use after free can occur in the error path of xe_migrate_clear because the code waits on m fence even though that pointer is stable only while the job mutex is held. Another thread may replace or release m fence before dma_fence_wait uses it, while the locally referenced fence remains the object that this operation is required to wait on. A local process with access to the Intel Xe DRM render node may be able to reach the affected migration clear path, but reliable triggering also requires an operation failure and winning the race window. For the CVSS the PR:L is selected because local user context and access to the DRM device interface are required, while full administrative privileges are not necessarily required. The issue is not directly network reachable. Impact is at least a local denial of service through a kernel crash or stall. In the paranoid interpretation, reuse of the freed dma_fence memory may create confidentiality and integrity impact and could potentially support privilege escalation, although a reliable exploitation primitive is not demonstrated.';YES REQUIRES MANUAL CHECK; ,and ActionableScore result is Borderline / manual review recommended (with actual score 3) MAYBE ERRORPATH UAF HARDWARE MEMORY DECREASED_TO_MODERATEREG_BASED_ON_ACTIONABLESCORELESSTHAN4 - - checked
======================================================================
ACTIONABLESCORE ANALYSIS
======================================================================
ActionableScore=3
PrimitiveClass=CLASS_B
RealUAF=YES
HostAdminRequired=UNKNOWN
NamespaceScopedPrivilege=UNKNOWN
ImportantCandidate=NO
ManualReview=RECOMMENDED
AutoDowngradeAllowed=YES
RequiresHostUID0=UNKNOWN
AuthorizationDecisionBypass=NO
ProtectedResourceImpact=NONE
B4PendingReview=NO
B4PendingConfirmed=NO
1. ActionableScore
* Raw conservative score: 3
* Conservative score: 3
* Raw paranoid score: 3
* Paranoid score: 3
* No floor or cap changed either score.
* Final recommended bucket: **Borderline / manual review recommended**::
2. Signal breakdown
Positive signals:
* +2 Real UAF / lifetime violation. `m->fence` is not stable without the job mutex and may be released or replaced before `dma_fence_wait()` consumes it.
* +1 Realistic kernel crash or strong DoS. Passing a freed `dma_fence` to the wait path can dereference invalid synchronization state and fault or stall the kernel.
Negative signals:
* No negative points. Intel Xe hardware is not proven rare, host-administrator privilege is not established, and the race is not shown to be sufficiently narrow or uncontrollable for a timing penalty.
Material non-awarded signals:
* Controlled reclaim or attacker-shaped replacement contents are not demonstrated.
* Arbitrary or directed kernel read or write is not demonstrated.
* Structured stale-object leverage is not awarded. Although `dma_fence` is an active structured object, meaningful attacker influence over its post-free replacement or consumed contents is not established.
* Weak or strong LPE leverage is not awarded merely from the UAF.
* No extra Availability point is awarded for the same possible crash.
* Confidentiality and integrity points are not awarded from theoretical reuse.
* Local unprivileged reachability is not awarded because access to the complete `xe_migrate_clear()` error path is not established.
* No remote reachability is established.
* B5-R does not apply because no retry-accumulated heap OOB write exists.
* B3-PENDING does not apply because no shared-backing write exists.
* B4-PENDING does not apply because there is no authorization decision bypass.
* The first visible lifetime operation is not a release that leaves the exact same reference for a second release.
* `dma_fence_wait(m->fence)` is a stale structured-object consumption, not a repeated lifetime mutation.
* `dma_fence_put(fence)` acts on the locally referenced fence and does not establish a second put on the potentially stale `m->fence`.
* Concrete repeated release/refcount +1 was not awarded.
* Paranoid repeated-refcount leverage +1 was withheld.
* FLOOR 5 was not applied because no repeated release, controlled replacement, meaningful post-free state influence, or established below-host-admin exploitation surface is present.
3. Reachability analysis
The supplied patch establishes an Intel Xe GPU migration-clear error path but does not show its callers or prove which userspace interface can drive the complete failing operation. An ordinary logged-in user or render-node client may participate in GPU operations, but that fact alone does not establish access to this internal migration error path.
The evidence does not establish whether the complete trigger is available to an ordinary render-node user, a DRM master, a compositor, a delegated graphics service, or only a more privileged device-management path. Therefore `HostAdminRequired=UNKNOWN`, not `NO` or `YES`.
No namespace-scoped capability chain is shown. There is no demonstrated network trigger. Intel Xe hardware and the corresponding driver are prerequisites, but this is not sufficient for a rare-hardware penalty. The bug requires concurrent modification or release of `m->fence` while the error path reads it without the job mutex. The commit does not establish whether attackers can repeatedly control both sides of that race, so no repeatability bonus or hard-race penalty is applied.
4. Primitive and severity interpretation
The exact primitive is a possible use-after-free of `m->fence`: the error path passes a pointer that is stable only under the job mutex to `dma_fence_wait()` without holding that mutex. The fixed code instead waits on the locally generated `fence`, whose reference remains owned by this invocation until the subsequent `dma_fence_put()`.
The stale object is an active structured `dma_fence`, not fixed byte storage. However, the demonstrated stale use is confined to synchronization in an error path. There is no evidence of controlled reclaim, attacker-controlled replacement data, directed memory access, disclosure, repeated refcount mutation, or a security-boundary bypass.
This is category A in the cleanup distinction: an ordinary stale error-path dereference or wait. It is not category B repeated lifetime corruption because the patch does not show an earlier put followed by a second put or refcount mutation on the same dangling reference.
The primitive is therefore CLASS_B, but currently constrained. The demonstrated practical consequence is kernel crash or stall. Privilege escalation remains theoretical and is not scored. `ImportantCandidate=NO` because meaningful leverage beyond the stale wait is not established. `AutoDowngradeAllowed=YES` because this is a constrained error-path UAF with no concrete repeated lifetime mutation or independently useful corruption primitive. Operationally, it is a borderline Moderate issue that still merits source-level review.
5. One-sentence report phrase
A possible race based use after free occurs when the xe_migrate_clear error path waits on an unstable m fence without the job mutex, creating a plausible local kernel crash or stall but no demonstrated controlled reclaim, arbitrary write, or privilege escalation primitive.
6. Manual review recommendation
MANUAL CHECK RECOMMENDED
Review the callers of `xe_migrate_clear()`, render-node reachability, ownership transitions of `m->fence`, and whether `dma_fence_wait()` can consume reclaimed callback or operations state under attacker-influenced allocation patterns.
7. Call-site confidence
Call-site confidence: medium
======================================================================
UPSTREAM PATCH SUMMARY
======================================================================
Patch: drm/xe: Use local fence in error path of xe_migrate_clear
Commit: 2ac5f466f62892a7d1ac2d1a3eb6cd14efbe2f2d
Upstream URL: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=2ac5f466f62892a7d1ac2d1a3eb6cd14efbe2f2d
Commit description:
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.
Fixes: dd08ebf ("drm/xe: Introduce a new DRM driver for Intel GPUs")
Cc: [email protected]
Signed-off-by: Matthew Brost <[email protected]>
Reviewed-by: Matthew Auld <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
(cherry picked from commit 762b7e9 )
Signed-off-by: Lucas De Marchi <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Changed files:
drivers/gpu/drm/xe/xe_migrate.c
Diff excerpt:
Not included in this email. See the upstream URL for the full patch.
Full patch:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=2ac5f466f62892a7d1ac2d1a3eb6cd14efbe2f2d
======================================================================
DETAILED REPORT METHODOLOGY
======================================================================
The original Linux kernel CVE announcement for CVE-2025-37869 can be found here:
https://lore.kernel.org/linux-cve-announce/?q=CVE-2025-37869
The original CVE announcement normally does not include a security-level
estimate. In particular, it may not contain a CVSS assessment, an impact
level, or enough information to determine whether the reported bug is a
practically relevant security issue. One purpose of this parallel CVE list
is to provide that missing technical and prioritization information.
The original goal of the AL-KERNEL project was to prioritize Linux kernel
CVE analysis automatically before manual review. The system can also help
identify non-security issues that may be suitable for automatic closure.
This report was generated by AL-KERNEL, an AI-assisted Linux kernel
vulnerability analysis system developed by Alexander Larkin.
The first analysis stage combines an autonomous classifier with additional
LLM-based analysis. The autonomous classifier runs locally on a CPU and is
based on a backpropagation neural network. Together, these mechanisms
produce a technical vulnerability description, identify likely weakness
types, estimate CVSS severity, and provide input for ActionableScore.
Two CVSS estimates are retained because incomplete kernel vulnerability
information often permits more than one defensible interpretation:
Conservative CVSS vector: AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
The Best / paranoid CVSS vector: AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
The Best / paranoid CVSS score: 7
The conservative vector represents a lower-impact interpretation.
The Best/paranoid vector intentionally represents a plausible upper-bound
interpretation and should not automatically be treated as demonstrated
real-world impact.
CVSS may also need to be adjusted for a particular Linux deployment,
because actual reachability, privileges, enabled kernel configuration,
hardware, namespaces, exposed device nodes, and other environmental
conditions can differ significantly between systems.
A separate ActionableScore mechanism evaluates practical remediation
urgency. Its analysis may include reachability, attack prerequisites,
subsystem exposure, memory-corruption characteristics, denial-of-service
reliability, and possible confidentiality, integrity, or
privilege-escalation impact.
Conservative ActionableScore: unknown
Paranoid ActionableScore: 3
The final base severity is taken directly from the second tab-separated
field of the AL-KERNEL classification result. ActionableScore does not
replace or independently override that final AL-KERNEL decision, and
if ActionableScore adjusted impact level of ALKERNEL, then you would see
self-readable flags above like INCREASED_TO_HIGH_BASED_ON_ACTIONABLESCOREHIGHEREQTHAN7.
For an AL-KERNEL result of MODERATE, this report uses the following
additional presentation split:
ActionableScore below 5 -> MODERATE REGULAR
ActionableScore 5 or more -> MODERATE 7.0
The distinction between MODERATE REGULAR and MODERATE 7.0 makes it
possible to identify Moderate issues that should receive manual analysis
and fixes before lower-priority MODERATE REGULAR issues. In many cases,
MODERATE REGULAR fixes may wait for a later rebase or routine update.
There is one override in which MODERATE REGULAR becomes MODERATE 7.0
even when the ActionableScore is below 5. When the AL-KERNEL result
contains the KPANIC flag, a MODERATE result is always presented as
MODERATE 7.0. The KPANIC flag selected with few regexps without
usage of AI at all, so it helps to detect cases when Kernel Crash happens
and similar (to filter False-Negative results from the LLM usage).
KPANIC indicates that a reliable kernel crash, kernel panic, or similarly
serious kernel availability impact was identified by the classification
workflow.
AL-KERNEL base severity for this report: MODERATE
KPANIC detected for this report: NO
Published priority for this report (same as in Subject): MODERATE REGULAR
These results are intended to support engineering triage. They are
machine-generated estimates, and cases marked for manual review should
be validated by a human security engineer before final disposition.
For more info read docs linked from here: https://kernelcve.org/
(and you can submit you own patch there to generate such a report
for non-existant CVE-id yet).
Note that in many cases this AI tool selects higher severity, than
real is (means you can expect Importants instead of Moderate 7.0 or
Moderates 7.0 instead of regular Moderates). If you see such cases,
please use reply email interface to add additional manual analyses
info to this particular CVE.
And please, please, let me know when you see Lows instead of Importants
or Important instead of Low (because particular for such cases I
need to tune this AI tool to make it better for this one and next similar).
My contact email for such notifications is [email protected] (and both
send reply to CVE record itself too and see "reply" button below for howto reply).
reply other threads:[~2026-10-13 1:01 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --from, and --in-reply-to
switches of git-send-email(1) and next cmd tested by kernelcve.org admin:
git send-email --smtp-server=mail.kernelcve.org --smtp-server-port=25 --smtp-auth=none --from='Your Name <youremail@domain.is>' --suppress-cc=all --no-cc \
--in-reply-to=cve-2025-37869.5ce9b4ec754a810489f895ca@kernelcve.org \
[email protected] \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
The file with msg could look like this then:
cat YOUR_REPLY
Subject: Re: [CVE-2026-64206][MODERATE REGULAR] Bluetooth: L2CAP test
Just testing public-inbox replies.
Thanks,
MyName
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox