CVE-2026-68263
High · 7.8CVSS
7.8
EPSS
0.1%
Published
Aug 10, 2026
CISA due date
—
Cloudanix analysis
A bug in the graphics driver for certain chips can let someone who already has access to the device crash it or take control.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Full Compromise
- Component
- OS kernel
- Class
- Use After Free
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Double call to drm_sched_entity_fini() in the Imagination PowerVR DRM driver triggers refcount underflow and use-after-free during context and queue destruction paths in the GPU scheduler.
Why it matters to the business
Systems using affected Imagination PowerVR graphics hardware may experience kernel crashes, denial of service, or local privilege escalation, disrupting operations on embedded and Linux-based devices.
How an attack unfolds
An attacker with local access triggers the faulty pvr_context_destroy path that invokes drm_sched_entity_fini twice; the second call underflows the refcount, enabling a use-after-free that can be leveraged for arbitrary code execution or system crash.
How to fix it
Apply the upstream fix that removes the redundant drm_sched_entity_fini call and retains it only in the pvr_context_create failure path; update to a kernel containing commit resolving the double-fini issue.
How to confirm the fix worked
Verify the patch is present by inspecting the pvr_context_destroy and pvr_queue_kill code paths for a single drm_sched_entity_fini call; test context creation/destruction workloads and confirm absence of refcount warnings in dmesg.
Typical attack path
- Obtain local user access on a vulnerable Linux system with Imagination PowerVR DRM driver loaded
- Trigger pvr_context creation and subsequent destruction via graphics or compute workloads
- Force the double drm_sched_entity_fini call through pvr_context_kill_queues and pvr_context_release paths
- Exploit the resulting refcount underflow and use-after-free for memory corruption
How to detect it
Search kernel logs for refcount_t underflow warnings, drm_sched_entity_fini stack traces, and powervr module activity; inspect dmesg and journalctl for pvr_queue_fence_release_work and pvr_context_release call sequences.
- refcount_t: underflow; use-after-free
- drm_sched_entity_fini+0x164/0x18c [gpu_sched]
- pvr_queue_destroy+0x64/0x134 [powervr]
- pvr_context_release+0x70/0xac [powervr]
- Workqueue: powervr-sched pvr_queue_fence_release_work [powervr]
What your security team should do
- Prioritize kernel updates for systems exposing Imagination PowerVR hardware
- Monitor for refcount underflow warnings in kernel logs on affected devices
- Restrict untrusted local access on embedded Linux deployments until patched
The record
In the Linux kernel, the following vulnerability has been resolved: drm/imagination: Fix double call to drm_sched_entity_fini() Call sequence of double call: pvr_context_destroy pvr_context_kill_queues pvr_queue_kill drm_sched_entity_destroy drm_sched_entity_fini // here pvr_context_put kref_put(..., pvr_context_release) pvr_context_destroy_queues pvr_queue_destroy drm_sched_entity_fini // here Call to drm_sched_entity_destroy() from pvr_context_kill_queues() calls drm_sched_entity_flush() + drm_sched_entity_fini(). drm_sched_entity_flush() ensures all pending jobs are completed and drm_sched_entity_fini() ensures no further submission is allowed as per expectation from pvr_context_kill_queues(). Double call to drm_sched_entity_fini() is misuse of the API so keep call only in pvr_context_create() failure path. Stack trace for issue with addition of refcounting for DRM entity stats in commit fd177135f0e6 ("drm/sched: Account entity GPU time"): [ 789.490527] ------------[ cut here ]------------ [ 789.490559] refcount_t: underflow; use-after-free. [ 789.490657] WARNING: lib/refcount.c:28 at refcount_warn_saturate+0xf4/0x144, CPU#0: kworker/u16:1/440 [ 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 [ 789.490798] CPU: 0 UID: 0 PID: 440 Comm: kworker/u16:1 Not tainted 7.0.0-rc7-02049-g5e2c0700091b #22 PREEMPT [ 789.490809] Hardware name: Texas Instruments AM625 SK (DT) [ 789.490815] Workqueue: powervr-sched pvr_queue_fence_release_work [powervr] [ 789.490868] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 789.490876] pc : refcount_warn_saturate+0xf4/0x144 [ 789.490884] lr : refcount_warn_saturate+0xf4/0x144 [ 789.490892] sp : ffff8000822cbcc0 [ 789.490895] x29: ffff8000822cbcc0 x28: 0000000000000000 x27: 0000000000000000 [ 789.490909] x26: 0000000000000000 x25: ffff800081b1e338 x24: ffff000004541405 [ 789.490922] x23: ffff000004bea950 x22: ffff00000042e400 x21: ffff000007123e30 [ 789.490935] x20: ffff000007123000 x19: ffff000007a80d50 x18: fffffffffffe7768 [ 789.490948] x17: 74736574202c6e6f x16: 697461746e656d65 x15: ffff800081b269f0 [ 789.490962] x14: 0000000000000030 x13: ffff800081b26a70 x12: 0000000000000211 [ 789.490975] x11: 00000000000000c0 x10: 0000000000000b50 x9 : ffff8000822cbb30 [ 789.490988] x8 : ffff0000014e7bb0 x7 : ffff00007725e780 x6 : 0000000372a05f49 [ 789.491001] x5 : 0000000000000000 x4 : 0000000000000001 x3 : 0000000000000010 [ 789.491013] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff0000014e7000 [ 789.491027] Call trace: [ 789.491032] refcount_warn_saturate+0xf4/0x144 (P) [ 789.491043] drm_sched_entity_fini+0x164/0x18c [gpu_sched] [ 789.491081] pvr_queue_destroy+0x64/0x134 [powervr] [ 789.491110] pvr_context_destroy_queues+0x34/0x64 [powervr] [ 789.491138] pvr_context_release+0x70/0xac [powervr] [ 789.491166] pvr_context_put.part.0+0x5c/0x7c [powervr] [ 789.491193] pvr_context_put+0x14/0x24 [powervr] [ 789.491221] pvr_queue_fence_release_work+0x20/0x38 [powervr] [ 789.491249] process_one_work+0x160/0x4c4 [ 789.491264] worker_thread+0x188/0x310 [ 789.491276] kthread+0x130/0x13c [ 789.491287] ret_from_fork+0x10/0x20 [ 789.491300] ---[ end trace 0000000000000000 ]---
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|