{"id":"AZL-110843","summary":"CVE-2026-99005 affecting package kernel 6.6.157.1-1","details":"In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/i915/gt: Unmask interrupts only when ACTIVE is true\n\nThere is a small race window between intel_rps_boost() reading\na stale ACTIVE state and queuing rps-\u003ework, where ACTIVE may be\nchanged via asynchronous calls triggered by wakeref drop.\nThis means that rps_work() could be triggered after the GT has\nbeen parked, so unmasking RPS PM interrupts would happen without\nholding PM wakelock. This sequence of events may be observed\nduring live_rc6_ctx_wa() selftest:\n\n1) live_rc6_ctx_wa()\n   -\u003e intel_engine_pm_put()\n      -\u003e wakeref_put()\n\nASYNC1) wakeref_put() callback\n          -\u003e __engine_park()\n             -\u003e intel_gt_pm_put_async()\n                -\u003e intel_gt_pm_put_async_untracked()\n                   -\u003e intel_wakeref_put_async()\n\nASYNC2) wakeref_put_async() callback\n          -\u003e __gt_park()\n             -\u003e intel_rps_park()\n                -\u003e intel_rps_clear_active() [clear ACTIVE]\n                WITH INTERRUPTS:\n                -\u003e rps_disable_interrupts()\n                   -\u003e cancel_work_sync(rps-\u003ework)\n                   -\u003e rps_reset_interrupts() [rps-\u003epm_iir = 0]\n                WITHOUT INTERRUPTS (TIMER mode):\n                -\u003e rps_stop_timer()\n                   -\u003e cancel_work_sync(rps-\u003ework)\n\n2) live_rc6_ctx_wa()\n   -\u003e intel_gt_wait_for_idle()\n      -\u003e intel_gt_retire_requests_timeout()\n         -\u003e dma_fence_wait_timeout()\n            -\u003e ops-\u003ewait() [i915_fence_wait()]\n               -\u003e i915_request_wait_timeout()\n                  -\u003e intel_rps_boost()\n                     -\u003e intel_rps_is_active() [check ACTIVE]\n                        [OPEN RACE WINDOW]\n                     -\u003e queue_work(rps-\u003ework)\n         -\u003e retire_requests()\n            -\u003e i915_request_retire()\n               -\u003e intel_rps_dec_waiters() [from 1 to 0]\n\nIf ASYNC1 and ASYNC2 would execute during [OPEN RACE WINDOW],\nthen:\n\n3) rps_work() executes from the workqueue and may satisfy\n   \"(!pm_iir && !client_boost)\" test (in TIMER mode rps-\u003epm_iir\n   is zeroed by an earlier rps_work() call or never gets a new\n   value after previous intel_rps_unpark() event), so it jumps\n   to \"out\" label, bypassing intel_rps_is_active() guard and\n   executes gen6_gt_pm_unmask_irq();\n\n4) GT is parked and runtime PM wakelock is dropped, so only\n   a raw reference in __gt_park() -\u003e\n   intel_display_power_put_async() remains for 100ms, then the\n   MMIO write in gen6_gt_pm_unmask_irq() detects missing\n   wakelock via assert_rpm_wakelock_held() and emits\n   \"RPM wakelock ref not held during HW access\" tainting kernel.\n\nCommit 3e7abf814193 (\"drm/i915: Extract GT render power state management\")\ndropped the \"if (rps-\u003einterrupts_enabled)\" guard that\ngen6_pm_rps_work() had around this unmask in i915_irq.c.\nINTEL_RPS_ACTIVE brackets the same window, since it is set in\nintel_rps_unpark() before rps_enable_interrupts() and\nrps_start_timer() and cleared in intel_rps_park() before\nrps_stop_timer() and rps_disable_interrupts().\n\nSkip unmasking when RPS is no longer active (reaching unmask\noperation is independent of INTERRUPT mode). This does not\nprevent RPS operation from resuming on the next unpark.\nIn interrupt mode, intel_rps_unpark() calls\nrps_enable_interrupts(), which enables and unmasks the PM\ninterrupts. In timer mode, it calls rps_start_timer(),\nrestarting periodic engine-busyness evaluation. The timer\ngenerates software RPS events and queues rps_work() directly,\nindependently of PM interrupt delivery. Neither mode requires\nthe late worker to unmask interrupts while the GT is parked\n\n(cherry picked from commit ca4a6deadad15b91ee083afe445fa6bdbfb68206)","modified":"2026-10-25T05:30:37Z","published":"2026-10-23T13:17:22Z","upstream":["CVE-2026-99005"],"references":[{"type":"WEB","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-99005"}],"affected":[{"package":{"name":"kernel","ecosystem":"Azure Linux:3","purl":"pkg:rpm/azure-linux/kernel"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"6.6.157.1-1"}]}],"database_specific":{"source":"https://github.com/microsoft/AzureLinuxVulnerabilityData/blob/main/osv/AZL-110843.json"}}],"schema_version":"1.9.0"}