]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commit
x86/sev-es: Use __copy_from_user_inatomic()
authorJoerg Roedel <jroedel@suse.de>
Wed, 3 Mar 2021 14:17:16 +0000 (15:17 +0100)
committerSeth Forshee <seth.forshee@canonical.com>
Wed, 17 Mar 2021 18:49:04 +0000 (13:49 -0500)
commit63a1d08ca5df5caafb97c094719d398460270a73
tree28110e680f6c7916fa70c535bc4ecca8bca371a9
parentd478f794ad21fe771c16a4c3b5edcf65ccd78bac
x86/sev-es: Use __copy_from_user_inatomic()

BugLink: https://bugs.launchpad.net/bugs/1919492
commit bffe30dd9f1f3b2608a87ac909a224d6be472485 upstream.

The #VC handler must run in atomic context and cannot sleep. This is a
problem when it tries to fetch instruction bytes from user-space via
copy_from_user().

Introduce a insn_fetch_from_user_inatomic() helper which uses
__copy_from_user_inatomic() to safely copy the instruction bytes to
kernel memory in the #VC handler.

Fixes: 5e3427a7bc432 ("x86/sev-es: Handle instruction fetches from user-space")
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: stable@vger.kernel.org # v5.10+
Link: https://lkml.kernel.org/r/20210303141716.29223-6-joro@8bytes.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
arch/x86/include/asm/insn-eval.h
arch/x86/kernel/sev-es.c
arch/x86/lib/insn-eval.c