Re: IPI deadlock bug

MOLNAR Ingo (mingo@chiara.csoma.elte.hu)
Tue, 8 Dec 1998 16:40:11 +0100 (CET)


On Tue, 8 Dec 1998, Amnon Shiloh wrote:

> 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/