KVM: x86: map/unmap private slots in __x86_set_memory_region
authorPaolo Bonzini <pbonzini@redhat.com>
Mon, 12 Oct 2015 11:56:27 +0000 (13:56 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 13 Oct 2015 16:28:58 +0000 (18:28 +0200)
commitf0d648bdf0a5bbc91da6099d5282f77996558ea4
tree8ba9f9080e3c51144df2fe3efdf5eeea1c231b3e
parent1d8007bdee074fdffcf3539492d8a151a1fb3436
KVM: x86: map/unmap private slots in __x86_set_memory_region

Otherwise, two copies (one of them never populated and thus bogus)
are allocated for the regular and SMM address spaces.  This breaks
SMM with EPT but without unrestricted guest support, because the
SMM copy of the identity page map is all zeros.

By moving the allocation to the caller we also remove the last
vestiges of kernel-allocated memory regions (not accessible anymore
in userspace since commit b74a07beed0e, "KVM: Remove kernel-allocated
memory regions", 2010-06-21); that is a nice bonus.

Reported-by: Alexandre DERUMIER <aderumier@odiso.com>
Cc: stable@vger.kernel.org
Fixes: 9da0e4d5ac969909f6b435ce28ea28135a9cbd69
Reviewed-by: Radim Krčmář <rkrcmar@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/x86.c