Messages in this thread | | | Subject | Re: 32bit processes at compatbility mode on x86_64 machines fail to restart syscall after processing a signal | From | Andi Kleen <> | Date | Thu, 19 May 2005 03:49:10 +0200 |
| |
"Zhang, Yanmin" <yanmin.zhang@intel.com> writes:
> The test case at > http://cvs.sourceforge.net/viewcvs.py/posixtest/posixtestsuite/conforman > ce/interfaces/clock_nanosleep/1-5.c fails if it runs as a 32bit process > on x86_86 machines. > > The root cause is the sub 32bit process fails to restart the syscall > after it is interrupted > by a signal. > > The syscall number of sys_restart_syscall in table sys_call_table is > __NR_restart_syscall (219) while it's __NR_ia32_restart_syscall (0) in > ia32_sys_call_table. When regs->rax==(unsigned > long)-ERESTART_RESTARTBLOCK, > function do_signal doesn't distinguish if the process is 64bit or 32bit, > and always sets > restart syscall number as __NR_restart_syscall (219).
Thanks for tracking this down. Queued.
-Andi
- 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/
| |