CVSROOT:        /cvs
Module name:    src
Changes by:     dera...@cvs.openbsd.org 2024/03/29 00:47:05

Modified files:
        sys/sys        : syscall_mi.h 

Log message:
Remove the at-syscall-time check for msyscall(2)'s behaviour.  msyscall(2)
was a big coding effort to ensure that system calls could only be performed
from static-binary/ld.so/libc.so/sigtramp regions of memory, by caching a
uvm entry with a serial number; new mmap/mprotect calls would increment
the map serial, and the entry would need to be looked up again.  So the
cost was O(1) in the usual case, but O(log n) with some locking if a map
change required a new lookup.
In the new world order, such regions are immutable so they cannot be
changed/split by mmap/mprotect; also we know the precise entry locations
of the syscalls due to system call pinning (ELF OPENBSD_SYSCALL and
pinsyscalls(2)), and this is all done as O(1) without any locking.

All the other parts of the subsystem will be ripped out but please
run a kernel with this before I make changes to ld.so..
ok kettenis

Reply via email to