51 lines
1.7 KiB
Diff
51 lines
1.7 KiB
Diff
From b134eac05adf33188616bf53ea38dc6c7ee487e8 Mon Sep 17 00:00:00 2001
|
|
From: Daniel J Blueman <daniel.blueman@gmail.com>
|
|
Date: Wed, 18 May 2011 16:31:31 -0700
|
|
Subject: [PATCH] x86, ioapic: Fix potential resume deadlock
|
|
|
|
commit b64ce24daffb634b5b3133a2e411bd4de50654e8 upstream.
|
|
|
|
Fix a potential deadlock when resuming; here the calling
|
|
function has disabled interrupts, so we cannot sleep.
|
|
|
|
Change the memory allocation flag from GFP_KERNEL to GFP_ATOMIC.
|
|
|
|
TODO: We can do away with this memory allocation during resume
|
|
by reusing the ioapic suspend/resume code that uses boot time
|
|
allocated buffers, but we want to keep this -stable patch
|
|
simple.
|
|
|
|
Signed-off-by: Daniel J Blueman <daniel.blueman@gmail.com>
|
|
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
|
|
Link: http://lkml.kernel.org/r/20110518233157.385970138@sbsiddha-MOBL3.sc.intel.com
|
|
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
|
---
|
|
arch/x86/kernel/apic/io_apic.c | 4 ++--
|
|
1 files changed, 2 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
|
|
index ca9e2a35..e437778 100644
|
|
--- a/arch/x86/kernel/apic/io_apic.c
|
|
+++ b/arch/x86/kernel/apic/io_apic.c
|
|
@@ -615,14 +615,14 @@ struct IO_APIC_route_entry **alloc_ioapic_entries(void)
|
|
struct IO_APIC_route_entry **ioapic_entries;
|
|
|
|
ioapic_entries = kzalloc(sizeof(*ioapic_entries) * nr_ioapics,
|
|
- GFP_KERNEL);
|
|
+ GFP_ATOMIC);
|
|
if (!ioapic_entries)
|
|
return 0;
|
|
|
|
for (apic = 0; apic < nr_ioapics; apic++) {
|
|
ioapic_entries[apic] =
|
|
kzalloc(sizeof(struct IO_APIC_route_entry) *
|
|
- nr_ioapic_registers[apic], GFP_KERNEL);
|
|
+ nr_ioapic_registers[apic], GFP_ATOMIC);
|
|
if (!ioapic_entries[apic])
|
|
goto nomem;
|
|
}
|
|
--
|
|
1.7.6.5
|
|
|