[PATCH V2 3/5] KVM: SVM: Inject #UD for INVLPGA if EFER.SVME=0

Kevin Cheng posted 5 patches 3 weeks, 6 days ago
There is a newer version of this series
[PATCH V2 3/5] KVM: SVM: Inject #UD for INVLPGA if EFER.SVME=0
Posted by Kevin Cheng 3 weeks, 6 days ago
INVLPGA should cause a #UD when EFER.SVME is not set. Add a check to
properly inject #UD when EFER.SVME=0.

Signed-off-by: Kevin Cheng <chengkev@google.com>
---
 arch/x86/kvm/svm/svm.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
index 557c84a060fc6..92a2faff1ccc8 100644
--- a/arch/x86/kvm/svm/svm.c
+++ b/arch/x86/kvm/svm/svm.c
@@ -2306,6 +2306,9 @@ static int invlpga_interception(struct kvm_vcpu *vcpu)
 	gva_t gva = kvm_rax_read(vcpu);
 	u32 asid = kvm_rcx_read(vcpu);
 
+	if (nested_svm_check_permissions(vcpu))
+		return 1;
+
 	/* FIXME: Handle an address size prefix. */
 	if (!is_long_mode(vcpu))
 		gva = (u32)gva;
-- 
2.52.0.457.g6b5491de43-goog
Re: [PATCH V2 3/5] KVM: SVM: Inject #UD for INVLPGA if EFER.SVME=0
Posted by Yosry Ahmed 3 weeks, 5 days ago
On Mon, Jan 12, 2026 at 05:45:33PM +0000, Kevin Cheng wrote:
> INVLPGA should cause a #UD when EFER.SVME is not set. Add a check to
> properly inject #UD when EFER.SVME=0.
> 
> Signed-off-by: Kevin Cheng <chengkev@google.com>

Reviewed-by: Yosry Ahmed <yosry.ahmed@linux.dev>

> ---
>  arch/x86/kvm/svm/svm.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
> index 557c84a060fc6..92a2faff1ccc8 100644
> --- a/arch/x86/kvm/svm/svm.c
> +++ b/arch/x86/kvm/svm/svm.c
> @@ -2306,6 +2306,9 @@ static int invlpga_interception(struct kvm_vcpu *vcpu)
>  	gva_t gva = kvm_rax_read(vcpu);
>  	u32 asid = kvm_rcx_read(vcpu);
>  
> +	if (nested_svm_check_permissions(vcpu))
> +		return 1;
> +
>  	/* FIXME: Handle an address size prefix. */
>  	if (!is_long_mode(vcpu))
>  		gva = (u32)gva;
> -- 
> 2.52.0.457.g6b5491de43-goog
>