On Fri, 2005-03-11 at 15:19 +0900, Takeharu KATO wrote:
Hi Joerg:
First of all, I am sorry to making mistake on my stack analysis.
After all, I found what is wrong.
The syscall_exit_work is called(jumped) by fork, strictly speaking,
this is caused by kernel_thead for init process.
At this point, kernel set a need_resched flag in thread_info struct
(flags member).
So, the system executes syscall_exit_work when
the swapper thread exited from syscall.
However, the syscall_exit_work routine does not check
preempt counts when it calls schedule function.
FYI, I post the patch which fix this problem.
I've confirmed the problem has been removed by this patch,
but I can not figure out whether it is truely
correct or not.
I think the problem is more why are we calling a syscall while the
preempt count is up ?
Ben.