diff options
| author | Sean Christopherson <seanjc@google.com> | 2026-05-01 23:35:34 +0300 |
|---|---|---|
| committer | Sean Christopherson <seanjc@google.com> | 2026-05-14 01:03:17 +0300 |
| commit | cb32e895546bf45ebdd0e76ae7a7d783eed2c304 (patch) | |
| tree | 10c82d046a9756bc7cc50a07865a97ceb7a8d05e | |
| parent | 6edd35e77a42ee3e72405619049a45bf368f9ab2 (diff) | |
| download | linux-cb32e895546bf45ebdd0e76ae7a7d783eed2c304.tar.xz | |
KVM: SEV: Explicitly validate the dst buffer for debug operations
When encrypting/decrypting guest memory, explicitly check that the
destination is non-NULL and doesn't wrap instead of subtly relying on
sev_pin_memory() to perform the check. This will allow adding and using
a more focused single-page pinning helper.
Link: https://patch.msgid.link/20260501203537.2120074-4-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
| -rw-r--r-- | arch/x86/kvm/svm/sev.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index 00d3bab091d2..9e9b8ca2e9f7 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -1357,9 +1357,11 @@ static int sev_dbg_crypt(struct kvm *kvm, struct kvm_sev_cmd *argp, bool dec) if (copy_from_user(&debug, u64_to_user_ptr(argp->data), sizeof(debug))) return -EFAULT; - if (!debug.len || debug.src_uaddr + debug.len < debug.src_uaddr) + if (!debug.len || !debug.src_uaddr || !debug.dst_uaddr) return -EINVAL; - if (!debug.dst_uaddr) + + if (debug.src_uaddr + debug.len < debug.src_uaddr || + debug.dst_uaddr + debug.len < debug.dst_uaddr) return -EINVAL; vaddr = debug.src_uaddr; |
