{"id":"CVE-2026-99090","kind":"vulnerability","aliases":["CVE-2026-99090"],"related":[],"title":"Linux kernel AMD GPU: vblank counter read races GPU reset","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/amdgpu: serialize vblank counter reads against GPU reset\n\nThe vblank counter callback reads display registers and scanout\nposition without holding reset_domain->sem. During GPU recovery,\ndisplay commit work can call the callback while reset owns the\nsemaphore for writing. The hardware access then triggers the\nlockdep_assert_held() in amdgpu_device_skip_hw_access() and sets\nTAINT_WARN when lockdep is enabled.\n\nTry to acquire the reset semaphore for reading before accessing the\nhardware, and hold it across the counter and scanout-position reads.\nIf reset is already in progress, return DRM's cached software vblank\ncount instead. This avoids blocking behind reset and avoids accessing\ndisplay hardware while it is being reset.\n\nThe cached count is less accurate than the hardware count, but is\nused only when reset prevents a safe hardware read. This addresses\nthe reset-time warning from this vblank path; it does not suppress or\nfix unrelated lockdep warnings.\n\n(cherry picked from commit 51a4359f7431a4be5e42803c8bdaf7e0e5be2934)","summary":"The amdgpu driver's vblank counter callback touched display hardware without holding the GPU reset semaphore, so it could run during GPU recovery. The fix serializes those reads against reset and falls back to the cached software count while a reset is in progress.","severity":"unknown","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["amdgpu","desktop","drm","linux-kernel","package"],"not_affected_if":["no-amd-gpu"],"how_to_check":null,"fix":null,"status":"open","published_at":"2026-10-26T15:16:47+00:00","first_seen_at":"2026-10-26T16:02:26+00:00","triaged_at":"2026-10-26T16:04:09+00:00","updated_at":"2026-10-26T16:04:09+00:00","category":"package","confidence":0.5,"triage":{"at":"2026-10-26T16:04:09Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"local","title":"Linux kernel AMD GPU: vblank counter read races GPU reset","impact":"low","summary":"The amdgpu driver's vblank counter callback touched display hardware without holding the GPU reset semaphore, so it could run during GPU recovery. The fix serializes those reads against reset and falls back to the cached software count while a reset is in progress.","category":"package","nicknames":[],"who_cares":["linux-kernel","amdgpu","drm","desktop"],"confidence":0.5,"needs_auth":"no","worst_case":"kernel warning taint during GPU reset; no code execution stated","analyst_note":"","how_to_check":"unknown","needs_analyst":false,"not_affected_if":["no-amd-gpu"],"who_is_affected":"Systems running a Linux kernel with the amdgpu DRM driver and a display stack that uses vblank counters, most likely desktops and workstations with AMD GPUs during GPU recovery. Systems without AMD GPUs or with the fix backported can skip it. The sources do not give affected kernel version ranges.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"low"},"cost_usd":0.000568,"input_tokens":3604,"output_tokens":416,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-2026':12A,15A '-99090':13A,16A '51a4359f7431a4be5e42803c8bdaf7e0e5be2934':238C 'access':120C,132C,150C,185C 'accur':198C 'acquir':143C 'across':156C 'address':215C 'alreadi':167C 'amd':3A 'amdgpu':17B,25B,128C 'assert':125C 'avoid':179C,184C 'back':56B 'behind':181C 'block':180C 'cach':59B,173C,194C 'call':108C 'callback':30B,89C,110C 'cherri':234C 'commit':105C,237C 'could':42B 'count':61B,176C,195C,202C 'counter':6A,29B,81C,88C,158C 'cve':11A,14A 'desktop':18B 'devic':129C 'display':32B,91C,104C,186C 'domain':99C 'driver':26B 'drm':19B,171C 'drm/amdgpu':78C 'enabl':140C 'fall':55B 'fix':48B,230C 'follow':73C 'gpu':4A,9A,37B,45B,84C,102C 'hardwar':33B,119C,152C,187C,201C,212C 'held':126C 'hold':35B,97C,154C 'hw':131C 'instead':177C 'kernel':2A,22B,71C 'less':197C 'linux':1A,21B,70C 'linux-kernel':20B 'lockdep':124C,138C,232C 'own':113C 'packag':23B 'path':224C 'pick':235C 'posit':95C,162C 'prevent':209C 'progress':67B,169C 'race':8A 'read':7A,51B,82C,90C,148C,163C,213C 'recoveri':46B,103C 'regist':92C 'reset':10A,38B,53B,64B,85C,98C,112C,145C,165C,182C,192C,208C,218C 'reset-tim':217C 'resolv':77C 'return':170C 'run':43B 'safe':211C 'scanout':94C,161C 'scanout-posit':160C 'sem':100C 'semaphor':39B,115C,146C 'serial':49B,79C 'set':134C 'skip':130C 'softwar':60B,174C 'suppress':228C 'taint':135C 'time':219C 'touch':31B 'tri':141C 'trigger':122C 'unrel':231C 'use':205C 'vblank':5A,28B,80C,87C,175C,223C 'vulner':74C 'warn':136C,220C,233C 'without':34B,96C 'work':106C 'write':117C","nicknames":[],"mitigations":[],"who_affected":"Systems running a Linux kernel with the amdgpu DRM driver and a display stack that uses vblank counters, most likely desktops and workstations with AMD GPUs during GPU recovery. Systems without AMD GPUs or with the fix backported can skip it. The sources do not give affected kernel version ranges.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-26T15:16:47+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-99090","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-99090","severity":null,"published_at":"2026-10-26T15:16:47+00:00","modified_at":"2026-10-26T15:16:47+00:00","first_seen_at":"2026-10-26T16:02:26+00:00","fetched_at":"2026-10-26T16:02:26+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}