about summary refs log tree commit diff
path: root/src/thread
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2020-08-30 21:37:12 -0400
committerRich Felker <dalias@aerifal.cx>2020-08-30 21:37:12 -0400
commit0b0640219338b80cf47026d1970b5503414ed7f3 (patch)
treea5abc13e40bcd817f2e280b7efe038ee5d1fd5b1 /src/thread
parentcf27184d00c1588eccac71a3bc89c9798e60bbd9 (diff)
downloadmusl-0b0640219338b80cf47026d1970b5503414ed7f3.tar.gz
musl-0b0640219338b80cf47026d1970b5503414ed7f3.tar.xz
musl-0b0640219338b80cf47026d1970b5503414ed7f3.zip
fix i386 __set_thread_area fallback
this code is only needed for pre-2.6 kernels, which are not actually
supported anyway, and was never tested. the fallback path using
SYS_modify_ldt failed to clear the upper bits of %eax (all ones due to
SYS_set_thread_area's return value being an error) before modifying
%al to attempt a new syscall.
Diffstat (limited to 'src/thread')
-rw-r--r--src/thread/i386/__set_thread_area.s1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/thread/i386/__set_thread_area.s b/src/thread/i386/__set_thread_area.s
index c2c21dd5..aa6852be 100644
--- a/src/thread/i386/__set_thread_area.s
+++ b/src/thread/i386/__set_thread_area.s
@@ -28,6 +28,7 @@ __set_thread_area:
 	ret
 2:
 	mov %ebx,%ecx
+	xor %eax,%eax
 	xor %ebx,%ebx
 	xor %edx,%edx
 	mov %ebx,(%esp)