GHSA-2R8M-GP54-6G6C
Vulnerability from github – Published: 2026-08-10 15:33 – Updated: 2026-08-10 15:33In the Linux kernel, the following vulnerability has been resolved:
sched_ext: Preserve rq tracking across local DSQ dispatch
dispatch_to_local_dsq() can run from scx_bpf_dsq_move_to_local() while ops.dispatch() has recorded the current rq. Moving a task to a local DSQ may switch to the source or destination rq before synchronously invoking ops.dequeue() through the following path:
SCX_CALL_OP(dispatch, rq) ops.dispatch() scx_bpf_dsq_move_to_local() scx_flush_dispatch_buf() finish_dispatch() dispatch_to_local_dsq() scx_dispatch_enqueue() local_dsq_post_enq() call_task_dequeue() SCX_CALL_OP_TASK(dequeue, locked_rq, ...)
The nested callback saves the recorded rq and restores it on return. If the rq tracking does not follow the lock switch, update_locked_rq() can trigger the following lockdep assertion while restoring an rq which is no longer held:
WARNING: kernel/sched/sched.h:1641 at call_task_dequeue+0x160/0x170 Call Trace: scx_dispatch_enqueue+0x2b0/0x460 dispatch_to_local_dsq+0x138/0x230 scx_flush_dispatch_buf+0x1af/0x220 scx_bpf_dsq_move_to_localv2+0xe2/0x1c0 bpf_sched_ext_ops_dispatch+0x4b/0xa7 do_pick_task_scx+0x3b6/0x910 pick_next_task+0x105/0x1f0 __schedule+0x3e7/0x1980
Introduce switch_rq_lock() to update the tracking state together with each rq lock handoff. Use it in dispatch_to_local_dsq(), move_remote_task_to_local_dsq() and the in-balance paths of scx_dsq_move(), ensuring that scx_locked_rq() consistently refers to the rq whose lock is actually held throughout the lock dance.
{
"affected": [],
"aliases": [
"CVE-2026-68094"
],
"database_specific": {
"cwe_ids": [],
"github_reviewed": false,
"github_reviewed_at": null,
"nvd_published_at": "2026-08-10T13:19:53Z",
"severity": null
},
"details": "In the Linux kernel, the following vulnerability has been resolved:\n\nsched_ext: Preserve rq tracking across local DSQ dispatch\n\ndispatch_to_local_dsq() can run from scx_bpf_dsq_move_to_local() while\nops.dispatch() has recorded the current rq. Moving a task to a local DSQ\nmay switch to the source or destination rq before synchronously invoking\nops.dequeue() through the following path:\n\n SCX_CALL_OP(dispatch, rq)\n ops.dispatch()\n scx_bpf_dsq_move_to_local()\n scx_flush_dispatch_buf()\n finish_dispatch()\n dispatch_to_local_dsq()\n scx_dispatch_enqueue()\n local_dsq_post_enq()\n call_task_dequeue()\n SCX_CALL_OP_TASK(dequeue, locked_rq, ...)\n\nThe nested callback saves the recorded rq and restores it on return. If\nthe rq tracking does not follow the lock switch, update_locked_rq() can\ntrigger the following lockdep assertion while restoring an rq which is\nno longer held:\n\n WARNING: kernel/sched/sched.h:1641 at call_task_dequeue+0x160/0x170\n Call Trace:\n scx_dispatch_enqueue+0x2b0/0x460\n dispatch_to_local_dsq+0x138/0x230\n scx_flush_dispatch_buf+0x1af/0x220\n scx_bpf_dsq_move_to_local___v2+0xe2/0x1c0\n bpf__sched_ext_ops_dispatch+0x4b/0xa7\n do_pick_task_scx+0x3b6/0x910\n __pick_next_task+0x105/0x1f0\n __schedule+0x3e7/0x1980\n\nIntroduce switch_rq_lock() to update the tracking state together with\neach rq lock handoff. Use it in dispatch_to_local_dsq(),\nmove_remote_task_to_local_dsq() and the in-balance paths of\nscx_dsq_move(), ensuring that scx_locked_rq() consistently refers to the\nrq whose lock is actually held throughout the lock dance.",
"id": "GHSA-2r8m-gp54-6g6c",
"modified": "2026-08-10T15:33:35Z",
"published": "2026-08-10T15:33:35Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-68094"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/18d62044cda7a2b40f59d910659c0b0d6accad37"
},
{
"type": "WEB",
"url": "https://git.kernel.org/stable/c/97c09c9f5739b8757ee29dabb0af30069137e286"
}
],
"schema_version": "1.4.0",
"severity": []
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.