Re: [PATCH v7 09/26] KVM: nSVM: Triple fault if restore host CR3 fails on nested #VMEXIT
From: Sean Christopherson
Date: Tue Mar 03 2026 - 11:54:05 EST
On Tue, Mar 03, 2026, Yosry Ahmed wrote:
> If loading L1's CR3 fails on a nested #VMEXIT, nested_svm_vmexit()
> returns an error code that is ignored by most callers, and continues to
> run L1 with corrupted state. A sane recovery is not possible in this
> case, and HW behavior is to cause a shutdown. Inject a triple fault
> ,nstead, and do not return early from nested_svm_vmexit(). Continue
s/,/i
> cleaning up the vCPU state (e.g. clear pending exceptions), to handle
> the failure as gracefully as possible.
>
> >From the APM:
> Upon #VMEXIT, the processor performs the following actions in
> order to return to the host execution context:
>
> ...
> if (illegal host state loaded, or exception while loading
> host state)
> shutdown
> else
> execute first host instruction following the VMRUN
Uber nit, use spaces instead of tabs in changelogs, as indenting eight chars is
almost always overkill and changelogs are more likely to be viewed in a reader
that has tab-stops set to something other than eight. E.g. using two spaces as
the margin and then manual indentation of four:
>From the APM:
Upon #VMEXIT, the processor performs the following actions in order to
return to the host execution context:
...
if (illegal host state loaded, or exception while loading host state)
shutdown
else
execute first host instruction following the VMRUN
Remove the return value of nested_svm_vmexit(), which is mostly
unchecked anyway.
> Remove the return value of nested_svm_vmexit(), which is mostly
> unchecked anyway.
>
> Fixes: d82aaef9c88a ("KVM: nSVM: use nested_svm_load_cr3() on guest->host switch")
> CC: stable@xxxxxxxxxxxxxxx
Heh, and super duper uber nit, "Cc:" is much more common than "CC:" (I'm actually
somewhat surprised checkpatch didn't complain since it's so particular about case
for other trailers).
$ git log -10000 | grep "CC:" | wc -l
38
$ git log -10000 | grep "Cc:" | wc -l
11238