From 0059c9f52595f8b49ac4e3ffee9c53dda3b3e2e3 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 3 Aug 2020 12:10:32 +0200 Subject: [PATCH] 4.19-stable patches added patches: kvm-lapic-prevent-setting-the-tscdeadline-timer-if-the-lapic-is-hw-disabled.patch x86-i8259-use-printk_deferred-to-prevent-deadlock.patch --- ...ne-timer-if-the-lapic-is-hw-disabled.patch | 33 ++++++++++++ queue-4.19/series | 2 + ...-printk_deferred-to-prevent-deadlock.patch | 51 +++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 queue-4.19/kvm-lapic-prevent-setting-the-tscdeadline-timer-if-the-lapic-is-hw-disabled.patch create mode 100644 queue-4.19/x86-i8259-use-printk_deferred-to-prevent-deadlock.patch diff --git a/queue-4.19/kvm-lapic-prevent-setting-the-tscdeadline-timer-if-the-lapic-is-hw-disabled.patch b/queue-4.19/kvm-lapic-prevent-setting-the-tscdeadline-timer-if-the-lapic-is-hw-disabled.patch new file mode 100644 index 00000000000..9c8ee8b489a --- /dev/null +++ b/queue-4.19/kvm-lapic-prevent-setting-the-tscdeadline-timer-if-the-lapic-is-hw-disabled.patch @@ -0,0 +1,33 @@ +From d2286ba7d574ba3103a421a2f9ec17cb5b0d87a1 Mon Sep 17 00:00:00 2001 +From: Wanpeng Li +Date: Fri, 31 Jul 2020 11:12:19 +0800 +Subject: KVM: LAPIC: Prevent setting the tscdeadline timer if the lapic is hw disabled + +From: Wanpeng Li + +commit d2286ba7d574ba3103a421a2f9ec17cb5b0d87a1 upstream. + +Prevent setting the tscdeadline timer if the lapic is hw disabled. + +Fixes: bce87cce88 (KVM: x86: consolidate different ways to test for in-kernel LAPIC) +Cc: +Signed-off-by: Wanpeng Li +Message-Id: <1596165141-28874-1-git-send-email-wanpengli@tencent.com> +Signed-off-by: Paolo Bonzini +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kvm/lapic.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/x86/kvm/lapic.c ++++ b/arch/x86/kvm/lapic.c +@@ -2034,7 +2034,7 @@ void kvm_set_lapic_tscdeadline_msr(struc + { + struct kvm_lapic *apic = vcpu->arch.apic; + +- if (!lapic_in_kernel(vcpu) || apic_lvtt_oneshot(apic) || ++ if (!kvm_apic_present(vcpu) || apic_lvtt_oneshot(apic) || + apic_lvtt_period(apic)) + return; + diff --git a/queue-4.19/series b/queue-4.19/series index 5d529216410..a6eab7f04d7 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -52,3 +52,5 @@ revert-i2c-cadence-fix-the-hold-bit-setting.patch x86-unwind-orc-fix-orc-for-newly-forked-tasks.patch cxgb4-add-missing-release-on-skb-in-uld_send.patch xen-netfront-fix-potential-deadlock-in-xennet_remove.patch +kvm-lapic-prevent-setting-the-tscdeadline-timer-if-the-lapic-is-hw-disabled.patch +x86-i8259-use-printk_deferred-to-prevent-deadlock.patch diff --git a/queue-4.19/x86-i8259-use-printk_deferred-to-prevent-deadlock.patch b/queue-4.19/x86-i8259-use-printk_deferred-to-prevent-deadlock.patch new file mode 100644 index 00000000000..63fb6ec8ff9 --- /dev/null +++ b/queue-4.19/x86-i8259-use-printk_deferred-to-prevent-deadlock.patch @@ -0,0 +1,51 @@ +From bdd65589593edd79b6a12ce86b3b7a7c6dae5208 Mon Sep 17 00:00:00 2001 +From: Thomas Gleixner +Date: Wed, 29 Jul 2020 10:53:28 +0200 +Subject: x86/i8259: Use printk_deferred() to prevent deadlock + +From: Thomas Gleixner + +commit bdd65589593edd79b6a12ce86b3b7a7c6dae5208 upstream. + +0day reported a possible circular locking dependency: + +Chain exists of: + &irq_desc_lock_class --> console_owner --> &port_lock_key + + Possible unsafe locking scenario: + + CPU0 CPU1 + ---- ---- + lock(&port_lock_key); + lock(console_owner); + lock(&port_lock_key); + lock(&irq_desc_lock_class); + +The reason for this is a printk() in the i8259 interrupt chip driver +which is invoked with the irq descriptor lock held, which reverses the +lock operations vs. printk() from arbitrary contexts. + +Switch the printk() to printk_deferred() to avoid that. + +Reported-by: kernel test robot +Signed-off-by: Thomas Gleixner +Signed-off-by: Ingo Molnar +Cc: stable@vger.kernel.org +Link: https://lore.kernel.org/r/87365abt2v.fsf@nanos.tec.linutronix.de +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kernel/i8259.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/x86/kernel/i8259.c ++++ b/arch/x86/kernel/i8259.c +@@ -207,7 +207,7 @@ spurious_8259A_irq: + * lets ACK and report it. [once per IRQ] + */ + if (!(spurious_irq_mask & irqmask)) { +- printk(KERN_DEBUG ++ printk_deferred(KERN_DEBUG + "spurious 8259A interrupt: IRQ%d.\n", irq); + spurious_irq_mask |= irqmask; + } -- 2.47.3