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

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

index db595d939be4c2f61afe9a37136466907c9d0979..05e68d89310252bb12cef3a3da125013cd68ee07 100644 (file)
@@ -40,3 +40,4 @@ x86-idt-mark-idt-tables-__initconst.patch
 x86-tsc-future-proof-native_calibrate_tsc.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.14/x86-apic-vector-fix-off-by-one-in-error-path.patch b/queue-4.14/x86-apic-vector-fix-off-by-one-in-error-path.patch
new file mode 100644 (file)
index 0000000..dd3787a
--- /dev/null
@@ -0,0 +1,59 @@
+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
+@@ -369,8 +369,11 @@ static int x86_vector_alloc_irqs(struct
+               irq_data->hwirq = virq + i;
+               err = assign_irq_vector_policy(virq + i, node, data, info,
+                                              irq_data);
+-              if (err)
++              if (err) {
++                      irq_data->chip_data = NULL;
++                      free_apic_chip_data(data);
+                       goto error;
++              }
+               /*
+                * If the apic destination mode is physical, then the
+                * effective affinity is restricted to a single target
+@@ -383,7 +386,7 @@ static int x86_vector_alloc_irqs(struct
+       return 0;
+ error:
+-      x86_vector_free_irqs(domain, virq, i + 1);
++      x86_vector_free_irqs(domain, virq, i);
+       return err;
+ }