---
id: "CVE-2026-98928"
kind: "vulnerability"
aliases: ["CVE-2026-98928"]
title: "Linux kernel KVM arm64: SVE flag mismatch can crash protected guests"
severity: "unknown"
cvss: null
epss: 0.00206
exploited: false
status: "open"
category: "runtime"
products: []
ecosystems: []
tags: ["arm64", "kvm", "linux-kernel", "runtime"]
not_affected_if: []
published_at: "2026-10-23T13:17:13+00:00"
first_seen_at: "2026-10-23T21:57:33+00:00"
updated_at: "2026-10-25T12:38:50+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-98928", "first_seen_at": "2026-10-23T21:57:33+00:00"}, {"source": "epss", "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-98928", "first_seen_at": "2026-10-25T12:38:50+00:00"}]
---

# Linux kernel KVM arm64: SVE flag mismatch can crash protected guests

In the Linux kernel's arm64 KVM, a host can set the guest SVE flag without the matching feature bit, leaving a vCPU with a NULL SVE state. The world switch then loads guest SVE state from that null pointer.

_Summary, check and fix written by a model from the sources; labelled as such._

## Timeline

- 2026-10-23T21:57:33+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-98928
- 2026-10-25T12:38:50+00:00 epss https://api.first.org/data/v1/epss?cve=CVE-2026-98928

## From the sources

In the Linux kernel, the following vulnerability has been resolved:

KVM: arm64: Derive GUEST_HAS_SVE from the SVE feature bit at EL2

pkvm_init_features_from_host() takes KVM_ARCH_FLAG_GUEST_HAS_SVE and
KVM_ARM_VCPU_SVE from the host separately, but pkvm_vcpu_init_sve()
tests the bit while vcpu_has_sve() reads the flag. A host that sets the
flag without the bit gets a vCPU with a NULL sve_state that the world
switch loads the guest's SVE state from.

Derive the flag from the bit, and drop the protected path's copy of the
host's flag, which is dead code since protected VMs are not allowed SVE.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
