]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.9-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 19 Jan 2018 15:31:17 +0000 (16:31 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 19 Jan 2018 15:31:17 +0000 (16:31 +0100)
added patches:
x86-apic-vector-fix-off-by-one-in-error-path.patch

queue-4.9/series
queue-4.9/x86-apic-vector-fix-off-by-one-in-error-path.patch [new file with mode: 0644]

index 4ac70ed37baf474f4bfa8ffc46dbd3499ff30de9..41b96db4d623910a90884243d3ec15e9b3744531 100644 (file)
@@ -19,3 +19,4 @@ module-add-retpoline-tag-to-vermagic.patch
 x86-mm-pkeys-fix-fill_sig_info_pkey.patch
 x86-tsc-fix-erroneous-tsc-rate-on-skylake-xeon.patch
 pipe-avoid-round_pipe_size-nr_pages-overflow-on-32-bit.patch
+x86-apic-vector-fix-off-by-one-in-error-path.patch
diff --git a/queue-4.9/x86-apic-vector-fix-off-by-one-in-error-path.patch b/queue-4.9/x86-apic-vector-fix-off-by-one-in-error-path.patch
new file mode 100644 (file)
index 0000000..788ad94
--- /dev/null
@@ -0,0 +1,56 @@
+From 45d55e7bac4028af93f5fa324e69958a0b868e96 Mon Sep 17 00:00:00 2001
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Tue, 16 Jan 2018 12:20:18 +0100
+Subject: x86/apic/vector: Fix off by one in error path
+
+From: Thomas Gleixner <tglx@linutronix.de>
+
+commit 45d55e7bac4028af93f5fa324e69958a0b868e96 upstream.
+
+Keith reported the following warning:
+
+WARNING: CPU: 28 PID: 1420 at kernel/irq/matrix.c:222 irq_matrix_remove_managed+0x10f/0x120
+  x86_vector_free_irqs+0xa1/0x180
+  x86_vector_alloc_irqs+0x1e4/0x3a0
+  msi_domain_alloc+0x62/0x130
+
+The reason for this is that if the vector allocation fails the error
+handling code tries to free the failed vector as well, which causes the
+above imbalance warning to trigger.
+
+Adjust the error path to handle this correctly.
+
+Fixes: b5dc8e6c21e7 ("x86/irq: Use hierarchical irqdomain to manage CPU interrupt vectors")
+Reported-by: Keith Busch <keith.busch@intel.com>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Tested-by: Keith Busch <keith.busch@intel.com>
+Cc: stable@vger.kernel.org
+Link: https://lkml.kernel.org/r/alpine.DEB.2.20.1801161217300.1823@nanos
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/kernel/apic/vector.c |    7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+--- a/arch/x86/kernel/apic/vector.c
++++ b/arch/x86/kernel/apic/vector.c
+@@ -361,14 +361,17 @@ static int x86_vector_alloc_irqs(struct
+               irq_data->chip_data = data;
+               irq_data->hwirq = virq + i;
+               err = assign_irq_vector_policy(virq + i, node, data, info);
+-              if (err)
++              if (err) {
++                      irq_data->chip_data = NULL;
++                      free_apic_chip_data(data);
+                       goto error;
++              }
+       }
+       return 0;
+ error:
+-      x86_vector_free_irqs(domain, virq, i + 1);
++      x86_vector_free_irqs(domain, virq, i);
+       return err;
+ }