1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 19:38:12 +00:00
serenity/Kernel/Syscalls
Andreas Kling f4624e4ee1 Kernel: Hoist allocation of main program FD in sys$execve()
When executing a dynamically linked program, we need to pass the main
program executable via a file descriptor to the dynamic loader.

Before this patch, we were allocating an FD for this purpose long after
it was safe to do anything fallible. If we were unable to allocate an
FD we would simply panic the kernel(!)

We now hoist the allocation so it can fail before we've committed to
a new executable.
2021-09-07 01:18:02 +02:00
..
access.cpp Kernel: Use TRY() in sys$access() 2021-09-05 16:25:40 +02:00
alarm.cpp Kernel: Use TRY() in sys$alarm() 2021-09-06 13:06:05 +02:00
anon_create.cpp Kernel: Use TRY() in sys$anon_create() 2021-09-05 14:36:40 +02:00
beep.cpp Kernel: Disable big process lock for sys$beep() 2021-08-06 23:36:12 +02:00
chdir.cpp Kernel: Improvements to Custody absolute path serialization 2021-09-06 13:06:05 +02:00
chmod.cpp Kernel: Make file description lookup return KResultOr 2021-09-05 18:36:13 +02:00
chown.cpp Kernel: Make file description lookup return KResultOr 2021-09-05 18:36:13 +02:00
clock.cpp Kernel: Make copy_time_from_user() helpers use KResultOr<Time> 2021-09-07 01:18:02 +02:00
debug.cpp Kernel: Use TRY() in sys$dbgputstr() 2021-09-05 18:15:05 +02:00
disown.cpp Kernel/Process: Move protected values to the end of the object 2021-08-12 20:57:32 +02:00
dup2.cpp Kernel: Make file description lookup return KResultOr 2021-09-05 18:36:13 +02:00
emuctl.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
execve.cpp Kernel: Hoist allocation of main program FD in sys$execve() 2021-09-07 01:18:02 +02:00
exit.cpp Kernel/Process: Move protected values to the end of the object 2021-08-12 20:57:32 +02:00
fcntl.cpp Kernel: Make file description lookup return KResultOr 2021-09-05 18:36:13 +02:00
fork.cpp Kernel: Make Memory::Region::map() return KResult 2021-09-06 13:06:05 +02:00
ftruncate.cpp Kernel: Make file description lookup return KResultOr 2021-09-05 18:36:13 +02:00
futex.cpp Kernel: Make copy_time_from_user() helpers use KResultOr<Time> 2021-09-07 01:18:02 +02:00
get_dir_entries.cpp Kernel: Make file description lookup return KResultOr 2021-09-05 18:36:13 +02:00
get_stack_bounds.cpp Kernel: Make copy_{from,to}_user() return KResult and use TRY() 2021-09-05 17:38:37 +02:00
getrandom.cpp Kernel: Use TRY() in sys$getrandom() 2021-09-06 02:36:21 +02:00
getuid.cpp Kernel: Make copy_{from,to}_user() return KResult and use TRY() 2021-09-05 17:38:37 +02:00
hostname.cpp Kernel: Use TRY() in sys$sethostname() 2021-09-05 18:22:18 +02:00
inode_watcher.cpp Kernel: Simplify sys$inode_watcher_remove_watch() a little bit 2021-09-05 18:41:28 +02:00
ioctl.cpp Kernel: Make file description lookup return KResultOr 2021-09-05 18:36:13 +02:00
keymap.cpp Kernel: Use TRY() in sys$setkeymap() 2021-09-05 18:15:05 +02:00
kill.cpp Kernel: Guard the all processes list with a Spinlock rather than a Mutex 2021-08-28 20:53:38 +02:00
link.cpp Kernel: Use copy_typed_from_user<T> for fetching syscall parameters 2021-09-05 17:51:37 +02:00
lseek.cpp Kernel: Make file description lookup return KResultOr 2021-09-05 18:36:13 +02:00
mkdir.cpp Kernel: Use TRY() in sys$mkdir() 2021-09-05 16:25:40 +02:00
mknod.cpp Kernel: Use copy_typed_from_user<T> for fetching syscall parameters 2021-09-05 17:51:37 +02:00
mmap.cpp Kernel: Use KResultOr and TRY() for {Shared,Private}InodeVMObject 2021-09-06 13:06:05 +02:00
module.cpp Kernel: Use TRY() in sys$module_load() and sys$module_unload() 2021-09-06 20:23:08 +02:00
mount.cpp Kernel: Tidy up Plan9FS construction a bit 2021-09-06 13:06:05 +02:00
open.cpp Kernel: Make file description lookup return KResultOr 2021-09-05 18:36:13 +02:00
perf_event.cpp Kernel: Use TRY() in sys$perf_register_string() 2021-09-05 18:15:05 +02:00
pipe.cpp Kernel: Make copy_{from,to}_user() return KResult and use TRY() 2021-09-05 17:38:37 +02:00
pledge.cpp Kernel: Use TRY() in sys$pledge() 2021-09-05 18:15:05 +02:00
prctl.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
process.cpp Kernel: Use TRY() in sys$set_process_name() 2021-09-05 18:17:06 +02:00
profiling.cpp Everywhere: Core dump => Coredump 2021-08-23 00:02:09 +02:00
ptrace.cpp Kernel: Rename ProcessPagingScope => ScopedAddressSpaceSwitcher 2021-09-06 18:56:51 +02:00
purge.cpp Everywhere: Prevent risky implicit casts of (Nonnull)RefPtr 2021-09-03 23:20:23 +02:00
read.cpp Kernel: Make file description lookup return KResultOr 2021-09-05 18:36:13 +02:00
readlink.cpp Kernel: Use TRY() in sys$readlink() 2021-09-05 17:55:43 +02:00
realpath.cpp Kernel: Improvements to Custody absolute path serialization 2021-09-06 13:06:05 +02:00
rename.cpp Kernel: Use TRY() in sys$rename() 2021-09-05 17:53:59 +02:00
rmdir.cpp Kernel: Use TRY() in sys$rmdir() 2021-09-05 17:54:33 +02:00
sched.cpp Kernel: Make copy_{from,to}_user() return KResult and use TRY() 2021-09-05 17:38:37 +02:00
select.cpp Kernel: Make copy_time_from_user() helpers use KResultOr<Time> 2021-09-07 01:18:02 +02:00
sendfd.cpp Kernel: Make file description lookup return KResultOr 2021-09-05 18:36:13 +02:00
setpgid.cpp Kernel: Use KResultOr better in ProcessGroup construction 2021-09-06 01:55:27 +02:00
setuid.cpp Kernel: Make copy_{from,to}_user() return KResult and use TRY() 2021-09-05 17:38:37 +02:00
shutdown.cpp Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIRED 2021-07-20 03:21:14 +02:00
sigaction.cpp Kernel: Make copy_{from,to}_user() return KResult and use TRY() 2021-09-05 17:38:37 +02:00
socket.cpp Kernel: Make file description lookup return KResultOr 2021-09-05 18:36:13 +02:00
stat.cpp Kernel: Make file description lookup return KResultOr 2021-09-05 18:36:13 +02:00
statvfs.cpp Kernel: Make file description lookup return KResultOr 2021-09-05 18:36:13 +02:00
sync.cpp Kernel: Disable big process lock for sys$sync 2021-08-07 15:30:26 +02:00
sysconf.cpp Kernel: Disable big process lock for sys$sysconf 2021-08-06 23:36:12 +02:00
thread.cpp Kernel: Make KString factories return KResultOr + use TRY() everywhere 2021-09-06 19:25:36 +02:00
times.cpp Kernel: Make copy_{from,to}_user() return KResult and use TRY() 2021-09-05 17:38:37 +02:00
ttyname.cpp Kernel: Make file description lookup return KResultOr 2021-09-05 18:36:13 +02:00
umask.cpp Kernel/Process: Move protected values to the end of the object 2021-08-12 20:57:32 +02:00
uname.cpp Kernel: Make copy_{from,to}_user() return KResult and use TRY() 2021-09-05 17:38:37 +02:00
unlink.cpp Kernel: Use TRY() in sys$unlink() 2021-09-05 17:56:40 +02:00
unveil.cpp Kernel: Make KString factories return KResultOr + use TRY() everywhere 2021-09-06 19:25:36 +02:00
utime.cpp Kernel: Use TRY() in sys$utime() 2021-09-05 17:53:28 +02:00
waitid.cpp Kernel: Use TRY() in sys$waitid() 2021-09-05 18:42:32 +02:00
write.cpp Kernel: Make file description lookup return KResultOr 2021-09-05 18:36:13 +02:00