{"cve":"CVE-2026-99183","nvd":{"published":"2026-10-28T11:17:39.123","modified":"2026-10-28T11:17:39.123","status":"Received","description":"In the Linux kernel, the following vulnerability has been resolved:\n\naccel/rocket: search every core slot when looking up a scheduler\n\nsched_to_core() walks rdev->cores[] up to rdev->num_cores, and\nrocket_remove() decrements num_cores for every core it removes. Unbind a\ncore that is not the last one and the cores behind it fall outside the\nsearch, so sched_to_core() returns NULL for a core that is still bound and\nstill running jobs. Neither caller checks the result:\n\n  rocket_job_run():      rocket_fence_create(core), core->dev\n  rocket_job_timedout(): dev_err(core->dev, \"NPU job timed out\")\n\nUnbinding the middle core of the three on an RK3588 while three clients are\nsubmitting to all of them faults twice, once from the surviving core's\njob queue and once from its reset work:\n\n  KASAN: null-ptr-deref in range [0x0000000000000220-0x0000000000000227]\n  Workqueue: fdad0000.npu drm_sched_run_job_work [gpu_sched]\n  pc : rocket_job_run+0x234/0x838 [rocket]\n  Call trace:\n   rocket_job_run+0x234/0x838 [rocket]\n   drm_sched_run_job_work+0x2cc/0xad8 [gpu_sched]\n   process_one_work+0x640/0x14f0\n\n  KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007]\n  Workqueue: rocket-reset-2 drm_sched_job_timedout [gpu_sched]\n  pc : rocket_job_timedout+0xf0/0x1e0 [rocket]\n  Call trace:\n   rocket_job_timedout+0xf0/0x1e0 [rocket]\n   drm_sched_job_timedout+0x188/0x6a0 [gpu_sched]\n\nBoth are the third core: the workqueue names are its device and its\ncore->index, and it was left at slot 2 while num_cores had dropped to 2.\n\nSearch all the slots that were allocated, the way find_core_for_dev() now\ndoes. A core that is still bound is then found, and the two callers get\nthe pointer they already assume they have.\n\nThis does not make unbinding one core out of several safe. An open client\nkeeps an entity pointing at the scheduler of the core that went away:\ndrm_sched reports it as not ready for every job that lands on it, and the\nclient waits in dma_fence_default_wait for a fence that will never signal.\nStopping the NULL dereference is what belongs in a fix; the rest wants\nmore thought.","cvss_v4":null,"cvss_v3":null,"cwes":[],"references":["https://git.kernel.org/stable/c/89c2c777df17eb0201c8e22afabbf3691f2a28fe","https://git.kernel.org/stable/c/c137756469d5bcc79e97beb406ae4d14b9585463"],"products":[],"source":"nvd","synced_at":"2026-10-28T11:37:51.394563875+00:00"},"epss":null,"kev":null,"osv":[],"attribution":["This product uses the NVD API but is not endorsed or certified by the NVD.","EPSS scores: FIRST Exploit Prediction Scoring System, https://www.first.org/epss","Known exploited vulnerabilities: CISA Known Exploited Vulnerabilities Catalog, https://www.cisa.gov/known-exploited-vulnerabilities-catalog","Package advisories: OSV (https://osv.dev), from the GitHub Advisory Database, PyPA, Go, RustSec and other ecosystem databases, under CC-BY 4.0 or CC0","CVE records: the CVE Program's CVE List (https://www.cve.org), under its terms of use (https://www.cve.org/Legal/TermsOfUse). CVE is a registered trademark of The MITRE Corporation; this product is not affiliated with the CVE Program."]}