Files
vuln-cve/data/2026/68xxx/CVE-2026-68263.json
T

184 lines
13 KiB
JSON
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"cveMetadata": {
"cveId": "CVE-2026-68263",
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"state": "PUBLISHED",
"assignerShortName": "Linux",
"dateReserved": "2026-07-30T09:28:09.378Z",
"datePublished": "2026-08-10T12:01:37.571Z",
"dateUpdated": "2026-08-17T05:01:55.726Z"
},
"containers": {
"cna": {
"providerMetadata": {
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux",
"dateUpdated": "2026-08-17T05:01:55.726Z"
},
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/imagination: Fix double call to drm_sched_entity_fini()\n\nCall sequence of double call:\npvr_context_destroy\n  pvr_context_kill_queues\n    pvr_queue_kill\n      drm_sched_entity_destroy\n        drm_sched_entity_fini // here\n  pvr_context_put\n    kref_put(..., pvr_context_release)\n      pvr_context_destroy_queues\n        pvr_queue_destroy\n          drm_sched_entity_fini // here\n\nCall to drm_sched_entity_destroy() from pvr_context_kill_queues() calls\ndrm_sched_entity_flush() + drm_sched_entity_fini().\ndrm_sched_entity_flush() ensures all pending jobs are completed and\ndrm_sched_entity_fini() ensures no further submission is allowed as\nper expectation from pvr_context_kill_queues(). Double call to\ndrm_sched_entity_fini() is misuse of the API so keep call only in\npvr_context_create() failure path.\n\nStack trace for issue with addition of refcounting for DRM entity\nstats in commit fd177135f0e6 (\"drm/sched: Account entity GPU time\"):\n\n[ 789.490527] ------------[ cut here ]------------\n[ 789.490559] refcount_t: underflow; use-after-free.\n[ 789.490657] WARNING: lib/refcount.c:28 at refcount_warn_saturate+0xf4/0x144, CPU#0: kworker/u16:1/440\n[ 789.490695] Modules linked in: powervr drm_gpuvm drm_exec gpu_sched drm_shmem_helper xhci_plat_hcd xhci_hcd dwc3 usbcore usb_common snd_soc_simple_card snd_soc_simple_card_utils sa2ul sha512 sha256 dwc3_am62 sha1 authenc rti_wdt libsha512 at24 sch_fq_codel fuse dm_mod ipv6\n[ 789.490798] CPU: 0 UID: 0 PID: 440 Comm: kworker/u16:1 Not tainted 7.0.0-rc7-02049-g5e2c0700091b #22 PREEMPT\n[ 789.490809] Hardware name: Texas Instruments AM625 SK (DT)\n[ 789.490815] Workqueue: powervr-sched pvr_queue_fence_release_work [powervr]\n[ 789.490868] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)\n[ 789.490876] pc : refcount_warn_saturate+0xf4/0x144\n[ 789.490884] lr : refcount_warn_saturate+0xf4/0x144\n[ 789.490892] sp : ffff8000822cbcc0\n[ 789.490895] x29: ffff8000822cbcc0 x28: 0000000000000000 x27: 0000000000000000\n[ 789.490909] x26: 0000000000000000 x25: ffff800081b1e338 x24: ffff000004541405\n[ 789.490922] x23: ffff000004bea950 x22: ffff00000042e400 x21: ffff000007123e30\n[ 789.490935] x20: ffff000007123000 x19: ffff000007a80d50 x18: fffffffffffe7768\n[ 789.490948] x17: 74736574202c6e6f x16: 697461746e656d65 x15: ffff800081b269f0\n[ 789.490962] x14: 0000000000000030 x13: ffff800081b26a70 x12: 0000000000000211\n[ 789.490975] x11: 00000000000000c0 x10: 0000000000000b50 x9 : ffff8000822cbb30\n[ 789.490988] x8 : ffff0000014e7bb0 x7 : ffff00007725e780 x6 : 0000000372a05f49\n[ 789.491001] x5 : 0000000000000000 x4 : 0000000000000001 x3 : 0000000000000010\n[ 789.491013] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff0000014e7000\n[ 789.491027] Call trace:\n[ 789.491032] refcount_warn_saturate+0xf4/0x144 (P)\n[ 789.491043] drm_sched_entity_fini+0x164/0x18c [gpu_sched]\n[ 789.491081] pvr_queue_destroy+0x64/0x134 [powervr]\n[ 789.491110] pvr_context_destroy_queues+0x34/0x64 [powervr]\n[ 789.491138] pvr_context_release+0x70/0xac [powervr]\n[ 789.491166] pvr_context_put.part.0+0x5c/0x7c [powervr]\n[ 789.491193] pvr_context_put+0x14/0x24 [powervr]\n[ 789.491221] pvr_queue_fence_release_work+0x20/0x38 [powervr]\n[ 789.491249] process_one_work+0x160/0x4c4\n[ 789.491264] worker_thread+0x188/0x310\n[ 789.491276] kthread+0x130/0x13c\n[ 789.491287] ret_from_fork+0x10/0x20\n[ 789.491300] ---[ end trace 0000000000000000 ]---"
}
],
"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 bug is reached only through the PowerVR DRM render node (/dev/dri/renderD*) via the DRM_IOCTL_PVR_CREATE_CONTEXT / SUBMIT_JOBS / DESTROY_CONTEXT ioctls or by closing the DRM file descriptor, which requires local access to the device.\nAC:L - pvr_context_destroy() unconditionally calls drm_sched_entity_destroy() (fini #1) and pvr_context_release() then calls drm_sched_entity_fini() again, so the extra stats kref put happens deterministically on every context teardown; the attacker also controls job submission, so keeping a job reference alive over the free window is trivially arranged.\nPR:L - All involved ioctls are marked DRM_RENDER_ALLOW, so any unprivileged local user (or sandboxed app on Android/embedded systems) that can open the render node — the normal configuration for graphics clients — can drive the path; no capability is required.\nUI:N - The attacker performs the whole sequence itself with open(), a few ioctls and close(); no action by another user or administrator is needed.\nS:U - The corruption stays within kernel memory managed by the same kernel security authority; no VM, IOMMU or sandbox boundary is crossed.\nC:H - The duplicate drm_sched_entity_stats_put() frees the kref'd drm_sched_entity_stats slab object while in-flight jobs still hold pointers to it, so subsequent scheduler accesses read freed memory that an unprivileged process can reallocate and spray, allowing disclosure of arbitrary kernel data.\nI:H - After the premature free, drm_sched_entity_stats_job_add_gpu_time() takes stats->lock and writes stats->runtime into reclaimed memory, giving a use-after-free write into an attacker-groomable kmalloc object that can be leveraged for privilege escalation.\nA:H - The refcount underflow triggers a WARNING splat and the resulting use-after-free on the entity stats object corrupts kernel heap state from the scheduler workqueue, readily causing an oops or panic."
}
]
}
],
"affected": [
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "unaffected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"drivers/gpu/drm/imagination/pvr_context.c",
"drivers/gpu/drm/imagination/pvr_queue.c",
"drivers/gpu/drm/imagination/pvr_queue.h"
],
"versions": [
{
"version": "eaf01ee5ba28b97f96a3d3eec4c5fbfb37ee4cde",
"lessThan": "9be3f4bd6f514f69c51a8c77ea64fce2729dc7f4",
"status": "affected",
"versionType": "git"
},
{
"version": "eaf01ee5ba28b97f96a3d3eec4c5fbfb37ee4cde",
"lessThan": "c88fdbf3da26e0179629530cae7768cd3d4ead85",
"status": "affected",
"versionType": "git"
},
{
"version": "eaf01ee5ba28b97f96a3d3eec4c5fbfb37ee4cde",
"lessThan": "c1136d907fd04ca5c62ba11c1159b5fe65a1760c",
"status": "affected",
"versionType": "git"
},
{
"version": "eaf01ee5ba28b97f96a3d3eec4c5fbfb37ee4cde",
"lessThan": "4af24c27a39ba147a613a09e10b9e0f7294524c0",
"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/imagination/pvr_context.c",
"drivers/gpu/drm/imagination/pvr_queue.c",
"drivers/gpu/drm/imagination/pvr_queue.h"
],
"versions": [
{
"version": "6.8",
"status": "affected"
},
{
"version": "0",
"lessThan": "6.8",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.12.101",
"lessThanOrEqual": "6.12.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "6.18.42",
"lessThanOrEqual": "6.18.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "7.1.6",
"lessThanOrEqual": "7.1.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "7.2",
"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": "6.8",
"versionEndExcluding": "6.12.101"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "6.8",
"versionEndExcluding": "6.18.42"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "6.8",
"versionEndExcluding": "7.1.6"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "6.8",
"versionEndExcluding": "7.2"
}
]
}
]
}
],
"references": [
{
"url": "https://git.kernel.org/stable/c/9be3f4bd6f514f69c51a8c77ea64fce2729dc7f4"
},
{
"url": "https://git.kernel.org/stable/c/c88fdbf3da26e0179629530cae7768cd3d4ead85"
},
{
"url": "https://git.kernel.org/stable/c/c1136d907fd04ca5c62ba11c1159b5fe65a1760c"
},
{
"url": "https://git.kernel.org/stable/c/4af24c27a39ba147a613a09e10b9e0f7294524c0"
}
],
"title": "drm/imagination: Fix double call to drm_sched_entity_fini()",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
}
}