{"id":"CVE-2026-98433","kind":"vulnerability","aliases":["CVE-2026-98433"],"related":[],"title":"Linux KVM on POWER: failed secure page import leaks secure memory","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: PPC: Book3S HV: fix secure device page leak on uv_page_in() failure\n\nIn kvmppc_svm_page_in(), if uv_page_in() fails after\nkvmppc_uvmem_get_page() has succeeded, the secure device page is never\nreleased.  kvmppc_uvmem_get_page() sets a bit in kvmppc_uvmem_bitmap,\nallocates a kvmppc_uvmem_page_pvt struct, marks the GFN as\nKVMPPC_GFN_UVMEM_PFN, and calls zone_device_page_init() which sets\nrefcount=1 and locks the page.  The subsequent goto out_finalize skips\nthe *mig.dst assignment, so migrate_vma_finalize() is a no-op for the\npage, and none of those resources are ever reclaimed.\n\nEach occurrence permanently consumes one entry from the firmware-bounded\nsecure memory pool (kvmppc_uvmem_bitmap), leaks pvt, and leaves the GFN\nmarked as secure — making it unusable for the lifetime of the VM.\n\nThe twin __kvmppc_svm_page_out() already handles the analogous uv_page_out()\nfailure correctly with unlock_page(dpage); __free_page(dpage).  Apply\nthe same pattern here: unlock_page() followed by put_page(), which\nchains through free_zone_device_folio() into kvmppc_uvmem_folio_free()\nto clear the bitmap bit, free pvt, and reset the GFN state.\n\nReachable whenever uv_page_in() returns an error (e.g. UV pool\nexhaustion) on any POWER9/10 + Ultravisor/PEF system.","summary":"When the Ultravisor rejects a page import in the PowerPC KVM code, the kernel never releases the secure device page it already allocated. Each failure permanently consumes one entry from the firmware-bounded secure memory pool and leaves that guest page marked secure for the life of the VM.","severity":"low","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["kvm","linux-kernel","power10","power9","powerpc","runtime","ultravisor"],"not_affected_if":["no-ultravisor","non-powerpc","x86-host"],"how_to_check":"- unknown","fix":"- unknown","status":"open","published_at":"2026-10-18T15:16:53+00:00","first_seen_at":"2026-10-23T21:57:15+00:00","triaged_at":"2026-10-25T05:27:39+00:00","updated_at":"2026-10-25T05:27:39+00:00","category":"runtime","confidence":0.6,"triage":{"at":"2026-10-25T05:27:39Z","model":"claude-haiku-5-5","output":{"fix":"- unknown","reach":"local","title":"Linux KVM on POWER: failed secure page import leaks secure memory","impact":"low","summary":"When the Ultravisor rejects a page import in the PowerPC KVM code, the kernel never releases the secure device page it already allocated. Each failure permanently consumes one entry from the firmware-bounded secure memory pool and leaves that guest page marked secure for the life of the VM.","category":"runtime","nicknames":[],"who_cares":["linux-kernel","kvm","powerpc","power9","power10","ultravisor"],"confidence":0.6,"needs_auth":"yes","worst_case":"Secure memory pool exhausted, VM pages unusable, host resources leak","analyst_note":"Sources give only the NVD record and kernel commit text; check the upstream kernel stable commit and affected/fixed kernel versions before setting fix or how_to_check.","how_to_check":"- unknown","needs_analyst":true,"not_affected_if":["x86-host","non-powerpc","no-ultravisor"],"who_is_affected":"Hosts running Linux KVM on IBM POWER9 or POWER10 systems with an Ultravisor (PEF secure guests), where guest page imports can fail, for example under secure memory pool exhaustion. X86, ARM and POWER systems without Ultravisor are not described as affected.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"low"},"cost_usd":0.000633,"input_tokens":3802,"output_tokens":505,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-2026':13A,16A '-98433':14A,17A '1':160C 'alloc':49B,136C 'alreadi':48B,235C 'analog':238C 'appli':251C 'assign':173C 'bit':131C,278C 'bitmap':135C,210C,277C 'book3s':89C 'bound':60B,204C 'call':152C 'chain':263C 'clear':275C 'code':38B 'consum':53B,197C 'correct':243C 'cve':12A,15A 'devic':45B,93C,120C,154C,267C 'dpage':247C,250C 'e.g':294C 'entri':55B,199C 'error':293C 'ever':192C 'exhaust':297C 'fail':5A,110C 'failur':51B,100C,242C 'final':169C,177C 'firmwar':59B,203C 'firmware-bound':58B,202C 'fix':91C 'folio':268C,272C 'follow':82C,258C 'free':248C,265C,273C,279C 'get':114C,127C 'gfn':145C,148C,216C,284C 'goto':167C 'guest':67B 'handl':236C 'hv':90C 'import':8A,33B 'init':156C 'kernel':21B,40B,80C 'kvm':2A,18B,37B,87C 'kvmppc':102C,112C,125C,133C,138C,147C,208C,231C,270C 'leak':9A,95C,211C 'leav':65B,214C 'life':73B 'lifetim':225C 'linux':1A,20B,79C 'linux-kernel':19B 'lock':162C 'make':220C 'mark':69B,143C,217C 'memori':11A,62B,206C 'mig.dst':172C 'migrat':175C 'never':41B,123C 'no-op':180C 'none':187C 'occurr':195C 'one':54B,198C 'op':182C 'page':7A,32B,46B,68B,94C,98C,104C,108C,115C,121C,128C,140C,155C,164C,185C,233C,240C,246C,249C,257C,261C,289C 'pattern':254C 'perman':52B,196C 'pfn':150C 'pool':63B,207C,296C 'power':4A 'power10':22B 'power9':23B 'power9/10':300C 'powerpc':24B,36B 'ppc':88C 'put':260C 'pvt':141C,212C,280C 'reachabl':286C 'reclaim':193C 'refcount':159C 'reject':30B 'releas':42B,124C 'reset':282C 'resolv':86C 'resourc':190C 'return':291C 'runtim':25B 'secur':6A,10A,44B,61B,70B,92C,119C,205C,219C 'set':129C,158C 'skip':170C 'state':285C 'struct':142C 'subsequ':166C 'succeed':117C 'svm':103C,232C 'system':302C 'twin':230C 'ultravisor':26B,29B 'ultravisor/pef':301C 'unlock':245C,256C 'unus':222C 'uv':97C,107C,239C,288C,295C 'uvmem':113C,126C,134C,139C,149C,209C,271C 'vm':76B,228C 'vma':176C 'vulner':83C 'whenev':287C 'zone':153C,266C","nicknames":[],"mitigations":[],"who_affected":"Hosts running Linux KVM on IBM POWER9 or POWER10 systems with an Ultravisor (PEF secure guests), where guest page imports can fail, for example under secure memory pool exhaustion. X86, ARM and POWER systems without Ultravisor are not described as affected.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-18T15:16:53+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-98433","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-98433","severity":null,"published_at":"2026-10-18T15:16:53+00:00","modified_at":"2026-10-19T10:18:51+00:00","first_seen_at":"2026-10-23T21:57:15+00:00","fetched_at":"2026-10-23T22:28:56+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"}