ChangeSet 1.2188, 2005/03/29 07:43:57-08:00, [EMAIL PROTECTED]
[PATCH] x86-64: Fix preemption off of irq context with PREEMPT_BKL
Fixing the interrupt tst for CONFIG_PREEMPT on x86-64 exposes another
bug with CONFIG_PREEMPT_BKL. Calling schedule due to preemption
releases the BKL which it shouldn't do.
Call preempt_schedule_irq instead (like for i386). This fixes the
easily reproducible filesystem errors I've seen (with reiserfs, which
heavily relies on the BKL).
Signed-off-by: Christophe Saout <[EMAIL PROTECTED]>
Signed-off-by: Andi Kleen <[EMAIL PROTECTED]>
Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
entry.S | 7 +------
1 files changed, 1 insertion(+), 6 deletions(-)
diff -Nru a/arch/x86_64/kernel/entry.S b/arch/x86_64/kernel/entry.S
--- a/arch/x86_64/kernel/entry.S 2005-03-29 08:08:24 -08:00
+++ b/arch/x86_64/kernel/entry.S 2005-03-29 08:08:24 -08:00
@@ -517,12 +517,7 @@
jnc retint_restore_args
bt $9,EFLAGS-ARGOFFSET(%rsp) /* interrupts off? */
jnc retint_restore_args
- movl $PREEMPT_ACTIVE,threadinfo_preempt_count(%rcx)
- sti
- call schedule
- cli
- GET_THREAD_INFO(%rcx)
- movl $0,threadinfo_preempt_count(%rcx)
+ call preempt_schedule_irq
jmp exit_intr
#endif
CFI_ENDPROC
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html