CVE-2026-98243 (GCVE-0-2026-98243)
Vulnerability from cvelistv5
Published
2026-10-06 08:45
Modified
2026-10-19 09:16
Severity ?
VLAI Severity ?
EPSS score ?
Summary
In the Linux kernel, the following vulnerability has been resolved:
dma-buf/dma-fence: fix checking signaling bit for timeline and driver name v3
The patch "dma-buf: dma-fence: Fix potential NULL pointer dereference"
changed the check to test for the ops pointer instead of the signaled
bit to avoid a potential NULL dereference when the ops pointer has been
cleared.
The problem is now that the ops pointer is cleared only when neither the
release nor the wait callback is implemented and this isn't true for a lot
of dma_fence implementations yet. So those implementations lost the RCU
protection after signaling of the returned string resulting in potential
use after free.
Add the signaling check additional to the ops pointer check so that we
have both the protection against NULL dereference as well as the RCU
protection after signaling for the returned string.
v2: improve comments to note RCU protection and explain why we check
both signaling state and ops pointer
v3: some comment improvements suggested by Philip
References
Impacted products
{
"containers": {
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Linux",
"programFiles": [
"drivers/dma-buf/dma-fence.c",
"include/linux/dma-fence.h"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"lessThan": "a4db25b8949d6ff9c1a685a1273a015e8bab29db",
"status": "affected",
"version": "035219a760edb35ae9a9e96beba7f122e26a997b",
"versionType": "git"
},
{
"lessThan": "3ed11c671ff7ec58c8fd96410233c677df23f407",
"status": "affected",
"version": "035219a760edb35ae9a9e96beba7f122e26a997b",
"versionType": "git"
},
{
"status": "affected",
"version": "15ecfdf0ef6f6d874d0a26690d300857b39ebfd0",
"versionType": "git"
},
{
"lessThan": "7.2",
"status": "affected",
"version": "7.1.5",
"versionType": "semver"
}
]
},
{
"defaultStatus": "affected",
"product": "Linux",
"programFiles": [
"drivers/dma-buf/dma-fence.c",
"include/linux/dma-fence.h"
],
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"versions": [
{
"status": "affected",
"version": "7.2"
},
{
"lessThan": "7.2",
"status": "unaffected",
"version": "0",
"versionType": "semver"
},
{
"lessThanOrEqual": "7.2.*",
"status": "unaffected",
"version": "7.2.8",
"versionType": "semver"
},
{
"lessThanOrEqual": "*",
"status": "unaffected",
"version": "7.3",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.2.8",
"versionStartIncluding": "7.2",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionEndExcluding": "7.3",
"versionStartIncluding": "7.2",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "7.1.5",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndma-buf/dma-fence: fix checking signaling bit for timeline and driver name v3\n\nThe patch \"dma-buf: dma-fence: Fix potential NULL pointer dereference\"\nchanged the check to test for the ops pointer instead of the signaled\nbit to avoid a potential NULL dereference when the ops pointer has been\ncleared.\n\nThe problem is now that the ops pointer is cleared only when neither the\nrelease nor the wait callback is implemented and this isn\u0027t true for a lot\nof dma_fence implementations yet. So those implementations lost the RCU\nprotection after signaling of the returned string resulting in potential\nuse after free.\n\nAdd the signaling check additional to the ops pointer check so that we\nhave both the protection against NULL dereference as well as the RCU\nprotection after signaling for the returned string.\n\nv2: improve comments to note RCU protection and explain why we check\n both signaling state and ops pointer\nv3: some comment improvements suggested by Philip"
}
],
"metrics": [
{
"cvssV3_1": {
"baseScore": 7.1,
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H",
"version": "3.1"
},
"scenarios": [
{
"lang": "en",
"value": "AV:L - The bug is reached through the local SYNC_IOC_FILE_INFO ioctl on a sync_file fd (sync_file_ioctl_fence_info -\u003e sync_fill_fence_info -\u003e dma_fence_timeline_name/dma_fence_driver_name). No network protocol carries data into this path.\nAC:L - The attacker produces the whole state: create an xe exec queue, submit a job, export the out-fence as a sync_file, destroy the queue, wait for signal plus an RCU grace period, then call the ioctl. The kfree_rcu\u0027d scheduler is then read deterministically.\nPR:L - Needs an ordinary unprivileged user who can open a DRM render node (render group or seat ACL) to create exec queues and export syncobj fences as sync_files; no root or CAP_SYS_ADMIN is required.\nUI:N - The attacker performs every step through their own ioctls on objects they own; no other user or administrator has to act.\nS:U - The use-after-free is a kernel memory read inside the same kernel security authority; no VM, IOMMU or sandbox boundary is crossed.\nC:H - Since ops stays non-NULL after signal, drm_sched_fence_get_timeline_name dereferences fence-\u003esched inside the freed xe guc exec-queue object and strscpy\u0027s the string at the loaded name pointer into info-\u003eobj_name, which is copied to userspace; a sprayed fake pointer gives a kernel read-out.\nI:N - The freed scheduler is only read: get_timeline_name/get_driver_name load a pointer and the caller copies a string from it. No write or indirect call goes through freed memory, so the code shows no write primitive.\nA:H - If the freed scheduler slot is reused, sched-\u003ename becomes a garbage pointer; strscpy/snprintf on it can fault and oops the kernel, and an unprivileged user can trigger this repeatedly."
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-19T09:16:14.740Z",
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux"
},
"references": [
{
"url": "https://git.kernel.org/stable/c/a4db25b8949d6ff9c1a685a1273a015e8bab29db"
},
{
"url": "https://git.kernel.org/stable/c/3ed11c671ff7ec58c8fd96410233c677df23f407"
}
],
"title": "dma-buf/dma-fence: fix checking signaling bit for timeline and driver name v3",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"assignerShortName": "Linux",
"cveId": "CVE-2026-98243",
"datePublished": "2026-10-06T08:45:13.411Z",
"dateReserved": "2026-09-25T10:25:14.330Z",
"dateUpdated": "2026-10-19T09:16:14.740Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
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…