x86/sev: Make enc_dec_hypercall() accept a size instead of npages
authorSteve Rutherford <srutherford@google.com>
Thu, 24 Aug 2023 22:37:31 +0000 (15:37 -0700)
committerIngo Molnar <mingo@kernel.org>
Fri, 25 Aug 2023 11:33:48 +0000 (13:33 +0200)
commitac3f9c9f1b37edaa7d1a9b908bc79d843955a1a2
tree6eef42ffb8a2a1b9edb5e02abb1e569aed6498b0
parente221804dad4e6fe3a0cf192ba3c42cd2f328bdac
x86/sev: Make enc_dec_hypercall() accept a size instead of npages

enc_dec_hypercall() accepted a page count instead of a size, which
forced its callers to round up. As a result, non-page aligned
vaddrs caused pages to be spuriously marked as decrypted via the
encryption status hypercall, which in turn caused consistent
corruption of pages during live migration. Live migration requires
accurate encryption status information to avoid migrating pages
from the wrong perspective.

Fixes: 064ce6c550a0 ("mm: x86: Invoke hypercall when page encryption status is changed")
Signed-off-by: Steve Rutherford <srutherford@google.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Reviewed-by: Pankaj Gupta <pankaj.gupta@amd.com>
Tested-by: Ben Hillier <bhillier@google.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20230824223731.2055016-1-srutherford@google.com
arch/x86/include/asm/mem_encrypt.h
arch/x86/kernel/kvm.c
arch/x86/mm/mem_encrypt_amd.c