[PATCH] fix oops on resume from apm bios initiated suspend

Milton Miller (miltonm@bga.com)
Wed, 28 May 2003 01:43:27 -0500 (CDT)


Hi Pavel.

Didn't know if you caught this one, but it fixes it for me and others
who responded on the list.

mm is NULL for kernel threads without their own context. active_mm is
maintained the one we lazly switch from.

Without this patch, apm bios initiated suspend events (eg panel close)
cause an oops on resume in the LDT restore, killing kapmd, which causes
further events to not be polled.

milton

===== arch/i386/kernel/suspend.c 1.16 vs edited =====
--- 1.16/arch/i386/kernel/suspend.c Sat May 17 16:09:37 2003
+++ edited/arch/i386/kernel/suspend.c Sat May 24 05:00:02 2003
@@ -114,7 +114,7 @@
cpu_gdt_table[cpu][GDT_ENTRY_TSS].b &= 0xfffffdff;

load_TR_desc(); /* This does ltr */
- load_LDT(&current->mm->context); /* This does lldt */
+ load_LDT(&current->active_mm->context); /* This does lldt */

/*
* Now maybe reload the debug registers
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/