From 97f887daf0241f1a2173150879cee4a5ed85a3ee Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 28 Apr 2008 14:10:22 -0700 Subject: [PATCH] .24 patch --- queue-2.6.24/series | 1 + ...-32-bit-x86-msi-x-allocation-leakage.patch | 40 +++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 queue-2.6.24/x86-fix-32-bit-x86-msi-x-allocation-leakage.patch diff --git a/queue-2.6.24/series b/queue-2.6.24/series index 5066f3a1b3d..63d211e4a5f 100644 --- a/queue-2.6.24/series +++ b/queue-2.6.24/series @@ -1,3 +1,4 @@ +x86-fix-32-bit-x86-msi-x-allocation-leakage.patch tehuti-check-register-size.patch tehuti-move-ioctl-perm-check-closer-to-function-start.patch usb-gadget-queue-usb-usb_cdc_get_encapsulated_response-message.patch diff --git a/queue-2.6.24/x86-fix-32-bit-x86-msi-x-allocation-leakage.patch b/queue-2.6.24/x86-fix-32-bit-x86-msi-x-allocation-leakage.patch new file mode 100644 index 00000000000..72e769b0f14 --- /dev/null +++ b/queue-2.6.24/x86-fix-32-bit-x86-msi-x-allocation-leakage.patch @@ -0,0 +1,40 @@ +From stable-bounces@linux.kernel.org Mon Apr 28 11:58:38 2008 +From: PJ Waskiewicz +Date: Mon, 28 Apr 2008 11:56:03 -0700 +Subject: x86: Fix 32-bit x86 MSI-X allocation leakage +To: stable@kernel.org, linux-kernel@vger.kernel.org +Cc: netdev@vger.kernel.org +Message-ID: <20080428185603.11595.17319.stgit@scrappy.jf.intel.com> + +From: PJ Waskiewicz + +commit 9d9ad4b51d2b29b5bbeb4011f5e76f7538119cf9 upstream + +This bug was introduced in the 2.6.24 i386/x86_64 tree merge, where +MSI-X vector allocation will eventually fail. The cause is the new +bit array tracking used vectors is not getting cleared properly on +IRQ destruction on the 32-bit APIC code. + +This can be seen easily using the ixgbe 10 GbE driver on multi-core +systems by simply loading and unloading the driver a few times. +Depending on the number of available vectors on the host system, the +MSI-X allocation will eventually fail, and the driver will only be +able to use legacy interrupts. + +Signed-off-by: Peter P Waskiewicz Jr +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kernel/io_apic_32.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/arch/x86/kernel/io_apic_32.c ++++ b/arch/x86/kernel/io_apic_32.c +@@ -2478,6 +2478,7 @@ void destroy_irq(unsigned int irq) + dynamic_irq_cleanup(irq); + + spin_lock_irqsave(&vector_lock, flags); ++ clear_bit(irq_vector[irq], used_vectors); + irq_vector[irq] = 0; + spin_unlock_irqrestore(&vector_lock, flags); + } -- 2.47.3