mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: <amirmohammad.eftekhar@cispa.de>
To: <seanjc@google.com>, <pbonzini@redhat.com>
Cc: <kvm@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<amirmohammadeftekhar@gmail.com>,
	Amirmohammad Eftekhar <amirmohammad.eftekhar@cispa.de>
Subject: [PATCH v3 0/2] KVM: nVMX: Add the activity-state cross-checks VM-entry requires
Date: Thu, 22 Oct 2026 23:51:44 +0200	[thread overview]
Message-ID: <20261022215146.233479-1-amirmohammad.eftekhar@cispa.de> (raw)
In-Reply-To: <atqDVkHjdJ2iF9Uv@google.com>

From: Amirmohammad Eftekhar <amirmohammad.eftekhar@cispa.de>

nested_check_guest_non_reg_state() only verifies that guest_activity_state is
one of ACTIVE/HLT/WAIT_SIPI; it performs none of the activity-state cross-checks
that VM entry requires.  Per Intel's SDM, "Checks on Guest Non-Register State":
the activity state must indicate the active state when the interruptibility-state
field blocks by STI or MOV SS, and when the valid bit of the VM-entry
interruption-information field is set the interruption "must not be one that
would normally be blocked" in the activity state -- for wait-for-SIPI, "No
interruptions are allowed".

KVM cannot rely on hardware to catch either miss: prepare_vmcs02() never writes
GUEST_ACTIVITY_STATE, so vmcs02 always carries the active state while the
injection is copied into vmcs02, and the physical VMLAUNCH sees a legal pair and
succeeds.  The missed-exit WARN in __nested_vmx_vmexit() cannot fire for this
class either, since the offending field is stripped before hardware sees vmcs02.

The two checks share this justification but are independent changes, so they are
split into separate patches per review feedback.

v3:
  - split into two patches, one per consistency check (Sean)
  - drop the comment that merely restated the code (Sean)
v2: clean resend of v1 (v1 was whitespace-damaged in transit by a mail client).

Amirmohammad Eftekhar (2):
  KVM: nVMX: Reject nested VM-entry in a non-active state blocked by
    STI/MOV-SS
  KVM: nVMX: Reject nested VM-entry in wait-for-SIPI with a pending
    event injection

 arch/x86/kvm/vmx/nested.c | 9 +++++++++
 1 file changed, 9 insertions(+)

-- 
2.34.1


  reply	other threads:[~2026-10-22 21:52 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-22 21:12 [PATCH] KVM: nVMX: Reject nested VM-entry in wait-for-SIPI with a pending event injection Amirmohammad Eftekhar
2026-10-22 21:42 ` Sean Christopherson
2026-10-22 21:51   ` amirmohammad.eftekhar [this message]
2026-10-22 21:51   ` [PATCH v3 1/2] KVM: nVMX: Reject nested VM-entry in a non-active state blocked by STI/MOV-SS amirmohammad.eftekhar
2026-10-22 21:51   ` [PATCH v3 2/2] KVM: nVMX: Reject nested VM-entry in wait-for-SIPI with a pending event injection amirmohammad.eftekhar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261022215146.233479-1-amirmohammad.eftekhar@cispa.de \
    --to=amirmohammad.eftekhar@cispa.de \
    --cc=amirmohammadeftekhar@gmail.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=seanjc@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®