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

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

index 843d58319f94eab60a6e8f840ba9262562e14036..b968643a07946db27cdc1c47b66f3bdaa4383ae7 100644 (file)
@@ -30,3 +30,4 @@ sched-deadline-zero-out-positive-runtime-after-throttling-constrained-tasks.patc
 x86-retpoline-add-lfence-to-the-retpoline-rsb-filling-rsb-macros.patch
 module-add-retpoline-tag-to-vermagic.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.4/x86-apic-vector-fix-off-by-one-in-error-path.patch b/queue-4.4/x86-apic-vector-fix-off-by-one-in-error-path.patch
new file mode 100644 (file)
index 0000000..1a97cdc
--- /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
+@@ -359,14 +359,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;
+ }