svn commit: r332061 - head/sys/amd64/ia32
Konstantin Belousov
kib at FreeBSD.org
Thu Apr 5 11:03:22 UTC 2018
Author: kib
Date: Thu Apr 5 11:03:21 2018
New Revision: 332061
URL: https://svnweb.freebsd.org/changeset/base/332061
Log:
Fix ERESTART for lcall $7,$0 syscalls.
The lcall trampoline enters kernel by int $0x80, which sets up invalid
length of the instruction for %rip rewind.
Reviewed by: bde
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Modified:
head/sys/amd64/ia32/ia32_syscall.c
Modified: head/sys/amd64/ia32/ia32_syscall.c
==============================================================================
--- head/sys/amd64/ia32/ia32_syscall.c Thu Apr 5 11:03:05 2018 (r332060)
+++ head/sys/amd64/ia32/ia32_syscall.c Thu Apr 5 11:03:21 2018 (r332061)
@@ -146,6 +146,7 @@ ia32_fetch_syscall_args(struct thread *td)
frame->tf_rip = eip;
frame->tf_cs = cs;
frame->tf_rsp += 2 * sizeof(u_int32_t);
+ frame->tf_err = 7; /* size of lcall $7,$0 */
}
#endif
More information about the svn-src-head
mailing list