Messages in this thread | | | Subject | Re: [patch V5 01/38] x86/kvm/svm: Use uninstrumented wrmsrl() to restore GS | From | Jürgen Groß <> | Date | Wed, 13 May 2020 09:11:39 +0200 |
| |
On 12.05.20 23:01, Thomas Gleixner wrote: > On guest exit MSR_GS_BASE contains whatever the guest wrote to it and the > first action after returning from the ASM code is to set it to the host > kernel value. This uses wrmsrl() which is interesting at least. > > wrmsrl() is either using native_write_msr() or the paravirt variant. The > XEN_PV code is uninteresting as nested SVM in a XEN_PV guest does not work. > > But native_write_msr() can be placed out of line by the compiler especially > when paravirtualization is enabled in the kernel configuration. The > function is marked notrace, but still can be probed if > CONFIG_KPROBE_EVENTS_ON_NOTRACE is enabled. > > That would be a fatal problem as kprobe events use per-CPU variables which > are GS based and would be accessed with the guest GS. Depending on the GS > value this would either explode in colorful ways or lead to completely > undebugable data corruption. > > Aside of that native_write_msr() contains a tracepoint which objtool > complains about as it is invoked from the noinstr section. > > As this cannot run inside a XEN_PV guest there is no point in using > wrmsrl(). Use native_wrmsrl() instead which is just a plain native WRMSR > without tracing or anything else attached. > > Signed-off-by: Thomas Gleixner <tglx@linutronix.de> > Cc: Paolo Bonzini <pbonzini@redhat.com> > Cc: Tom Lendacky <thomas.lendacky@amd.com> > Cc: Juergen Gross <jgross@suse.com>
Acked-by: Juergen Gross <jgross@suse.com>
Juergen
| |