summaryrefslogtreecommitdiff
path: root/etc/llmnrd.service
diff options
context:
space:
mode:
Diffstat (limited to 'etc/llmnrd.service')
-rw-r--r--etc/llmnrd.service11
1 files changed, 11 insertions, 0 deletions
diff --git a/etc/llmnrd.service b/etc/llmnrd.service
new file mode 100644
index 0000000..62d8764
--- /dev/null
+++ b/etc/llmnrd.service
@@ -0,0 +1,11 @@
+[Unit]
+Description=Link-Local Multicast Name Resolution Daemon
+After=network.target
+
+[Service]
+Type=simple
+ExecStart=/usr/sbin/llmnrd
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
pu is not loaded and the host is using eager fpu, irq_fpu_usable() returns true (interrupted_kernel_fpu_idle() returns true). The interrupt handler proceeds to use the fpu with the guest's xcr0 live. kernel_fpu_begin() saves the current fpu context. If this uses XSAVE[OPT], it may leave the xsave area in an undesirable state. According to the SDM, during XSAVE bit i of XSTATE_BV is not modified if bit i is 0 in xcr0. So it's possible that XSTATE_BV[i] == 1 and xcr0[i] == 0 following an XSAVE. kernel_fpu_end() restores the fpu context. Now if any bit i in XSTATE_BV == 1 while xcr0[i] == 0, XRSTOR generates a #GP. The fault is trapped and SIGSEGV is delivered to the current process. Only pre-4.2 kernels appear to be vulnerable to this sequence of events. Commit 653f52c ("kvm,x86: load guest FPU context more eagerly") from 4.2 forces the guest's fpu to always be loaded on eagerfpu hosts. This patch fixes the bug by keeping the host's xcr0 loaded outside of the interrupts-disabled region where KVM switches into guest mode. Cc: stable@vger.kernel.org Suggested-by: Andy Lutomirski <luto@amacapital.net> Signed-off-by: David Matlack <dmatlack@google.com> [Move load after goto cancel_injection. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'Documentation')