|
Juergen Gross |
28b2cf |
Patch-mainline: v5.19-rc8
|
|
Juergen Gross |
28b2cf |
Git-commit: cf5029d5dd7cb0aaa53250fa9e389abd231606b3
|
|
Juergen Gross |
28b2cf |
References: git-fixes
|
|
Juergen Gross |
28b2cf |
From: Aaron Lewis <aaronlewis@google.com>
|
|
Juergen Gross |
28b2cf |
Date: Thu, 14 Jul 2022 16:13:15 +0000
|
|
Juergen Gross |
28b2cf |
Subject: [PATCH] KVM: x86: Protect the unused bits in MSR exiting flags
|
|
Juergen Gross |
28b2cf |
|
|
Juergen Gross |
28b2cf |
The flags for KVM_CAP_X86_USER_SPACE_MSR and KVM_X86_SET_MSR_FILTER
|
|
Juergen Gross |
28b2cf |
have no protection for their unused bits. Without protection, future
|
|
Juergen Gross |
28b2cf |
development for these features will be difficult. Add the protection
|
|
Juergen Gross |
28b2cf |
needed to make it possible to extend these features in the future.
|
|
Juergen Gross |
28b2cf |
|
|
Juergen Gross |
28b2cf |
Signed-off-by: Aaron Lewis <aaronlewis@google.com>
|
|
Juergen Gross |
28b2cf |
Message-Id: <20220714161314.1715227-1-aaronlewis@google.com>
|
|
Juergen Gross |
28b2cf |
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
Juergen Gross |
28b2cf |
Signed-off-by: Juergen Gross <jgross@suse.com>
|
|
Juergen Gross |
28b2cf |
---
|
|
Juergen Gross |
28b2cf |
arch/x86/kvm/x86.c | 8 ++++++++
|
|
Juergen Gross |
28b2cf |
1 file changed, 8 insertions(+)
|
|
Juergen Gross |
28b2cf |
|
|
Juergen Gross |
28b2cf |
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
|
|
Juergen Gross |
28b2cf |
index 143e37298d8a..e5fa335a4ea7 100644
|
|
Juergen Gross |
28b2cf |
--- a/arch/x86/kvm/x86.c
|
|
Juergen Gross |
28b2cf |
+++ b/arch/x86/kvm/x86.c
|
|
Juergen Gross |
28b2cf |
@@ -6029,6 +6029,11 @@ int kvm_vm_ioctl_enable_cap(struct kvm *kvm,
|
|
Juergen Gross |
28b2cf |
r = 0;
|
|
Juergen Gross |
28b2cf |
break;
|
|
Juergen Gross |
28b2cf |
case KVM_CAP_X86_USER_SPACE_MSR:
|
|
Juergen Gross |
28b2cf |
+ r = -EINVAL;
|
|
Juergen Gross |
28b2cf |
+ if (cap->args[0] & ~(KVM_MSR_EXIT_REASON_INVAL |
|
|
Juergen Gross |
28b2cf |
+ KVM_MSR_EXIT_REASON_UNKNOWN |
|
|
Juergen Gross |
28b2cf |
+ KVM_MSR_EXIT_REASON_FILTER))
|
|
Juergen Gross |
28b2cf |
+ break;
|
|
Juergen Gross |
28b2cf |
kvm->arch.user_space_msr_mask = cap->args[0];
|
|
Juergen Gross |
28b2cf |
r = 0;
|
|
Juergen Gross |
28b2cf |
break;
|
|
Juergen Gross |
28b2cf |
@@ -6183,6 +6188,9 @@ static int kvm_vm_ioctl_set_msr_filter(struct kvm *kvm, void __user *argp)
|
|
Juergen Gross |
28b2cf |
if (copy_from_user(&filter, user_msr_filter, sizeof(filter)))
|
|
Juergen Gross |
28b2cf |
return -EFAULT;
|
|
Juergen Gross |
28b2cf |
|
|
Juergen Gross |
28b2cf |
+ if (filter.flags & ~KVM_MSR_FILTER_DEFAULT_DENY)
|
|
Juergen Gross |
28b2cf |
+ return -EINVAL;
|
|
Juergen Gross |
28b2cf |
+
|
|
Juergen Gross |
28b2cf |
for (i = 0; i < ARRAY_SIZE(filter.ranges); i++)
|
|
Juergen Gross |
28b2cf |
empty &= !filter.ranges[i].nmsrs;
|
|
Juergen Gross |
28b2cf |
|
|
Juergen Gross |
28b2cf |
--
|
|
Juergen Gross |
28b2cf |
2.35.3
|
|
Juergen Gross |
28b2cf |
|