> Hello,
>
> Here is a serious bug that can cause deadlocks on an SMP
> in the latest 2.1.1xx kernels:
[nicely spotted!]
> ret_from_intr:
> GET_CURRENT(%ebx)
> movl EFLAGS(%esp),%eax # mix EFLAGS and CS
> movb CS(%esp),%al
> testl $(VM_MASK | 3),%eax # return to VM86 mode or non-supervisor?
> - jne ret_with_reschedule
> - jmp restore_all
> + je restore_all
> + sti
> + jmp ret_with_reschedule
>
> ALIGN
>
> Hope this is included in the forthcoming Linux kernels.
here is another SMP one, not as serious but if we are at changing entry.S
anyway :)
--- linux/arch/i386/kernel/entry.S.orig Mon Dec 7 22:58:46 1998
+++ linux/arch/i386/kernel/entry.S Tue Dec 8 15:28:27 1998
@@ -155,7 +155,7 @@
ret_from_fork:
GET_CURRENT(%ebx)
#ifdef __SMP__
- btrl $0, SYMBOL_NAME(scheduler_lock)
+ lock; btrl $0, SYMBOL_NAME(scheduler_lock)
#endif /* __SMP__ */
jmp ret_from_sys_call
-- mingo
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/