lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.2.20.1709081013530.1888@nanos>
Date:   Fri, 8 Sep 2017 10:19:52 +0200 (CEST)
From:   Thomas Gleixner <tglx@...utronix.de>
To:     LKML <linux-kernel@...r.kernel.org>
cc:     Stephen Hemminger <sthemmin@...rosoft.com>,
        Simon Xiao <sixiao@...rosoft.com>,
        KY Srinivasan <kys@...rosoft.com>,
        Haiyang Zhang <haiyangz@...rosoft.com>,
        Steven Rostedt <rostedt@...dmis.org>,
        Peter Zijlstra <peterz@...radead.org>,
        Linus Torvalds <torvalds@...ux-foundation.org>,
        Josh Poimboeuf <jpoimboe@...hat.com>,
        "H. Peter Anvin" <hpa@...or.com>,
        Denys Vlasenko <dvlasenk@...hat.com>,
        Brian Gerst <brgerst@...il.com>,
        Borislav Petkov <bp@...en8.de>,
        Andy Lutomirski <luto@...nel.org>
Subject: [PATCH] x86/idt: Unbreak MS HyperV hypercall vector install

The rework of the IDT setup changed the way how unused system gates are
accounted. At the end of the gate initialization all unused gates in the
system vector area are set to the spurios handler and marked as used for
consistency reasons.

Marking them as used breaks MS HyperV because it installs its hypercall
vector after that point and the installation is guarded by the bit in the
used_vectors map. So the hyperv vector stays directed to the spurious
interrupt handler.

Leave them marked as unused again and unbreak HyperV that way.

Fixes: dc20b2d52653 ("x86/idt: Move interrupt gate initialization to IDT code")
Reported-by: Stephen Hemminger <sthemmin@...rosoft.com>
Signed-off-by: Thomas Gleixner <tglx@...utronix.de>

---
 arch/x86/kernel/idt.c |    1 -
 1 file changed, 1 deletion(-)

--- a/arch/x86/kernel/idt.c
+++ b/arch/x86/kernel/idt.c
@@ -320,7 +320,6 @@ void __init idt_setup_apic_and_irq_gates
 
 	for_each_clear_bit_from(i, used_vectors, NR_VECTORS) {
 #ifdef CONFIG_X86_LOCAL_APIC
-		set_bit(i, used_vectors);
 		set_intr_gate(i, spurious_interrupt);
 #else
 		entry = irq_entries_start + 8 * (i - FIRST_EXTERNAL_VECTOR);

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ