Commit Graph

288 Commits

Author SHA1 Message Date
Matheus 5360edb9c7 pipe2: properly clean up vnode references on error
Currently, pipe2 both closes the fds and releases references to the pipe
vnode on failure. However, closing the fds already causes the vnode
references to be dropped.

Make pipe2 only release the vnode references when the respective file_t
were not closed.

Found by syzkaller fuzzing.
2026-10-09 02:11:50 -03:00
Matheus 47ce33935f mknodat: refuse to create symlinks
The current mknodat code creates symlinks when requested. Not only does
this break POSIX, it also causes a kernel crash (NULL-deref on
tmpfs_readlink).

Refuse to create symlinks with mknodat.

Found by syzkaller fuzzing.
2026-10-09 02:10:12 -03:00
Matheus b52882f3f7 syscalls: fix vnode cleanup in some *at syscalls
Some *at functions have a cleanup goto which could use an uninitialized
vnode. Fix this by defining the vnodes earlier.

Found by syzkaller fuzzing.
2026-10-09 01:41:48 -03:00
wnstngs 91491d825b kernel: remove the list_t alias since it's just a typedef for node 2026-10-07 14:08:36 +03:00
wnstngs 9cffe521f3 kernel: use circular lists in various places 2026-10-07 10:32:08 +03:00
Matheus d214326e8e print: add nouserprint argument
For some usecases, silencing syscall_print()s is ideal. A good example
of that is syzkaller, which uses logs to detect crashes and a badly
timed syscall_print() could interfere.

Add a nouserprint argument which skips printing on syscall_print().
2026-10-06 11:51:00 -03:00
Matheus e8da0eba6a statvfs: handle vnodes without a vfs 2026-10-06 11:50:58 -03:00
wnstngs 6780626f29 kernel: cancel interrupted nanosleep timer without remaining pointer 2026-09-23 20:48:29 +03:00
Matheus 3a421a58ad futex: style 2026-09-15 15:06:16 -03:00
Matheus 58d2e468da futex: refactor and optimize 2026-09-15 14:57:19 -03:00
Matheus cdee765643 raw sockets: make creating them a privileged operation 2026-09-14 14:03:39 -03:00
Matheus 3eaca91ff1 vfs: properly sync metadata 2026-09-14 10:11:31 -03:00
Matheus 66b0cb9076 sockets: expose raw sockets to userspace 2026-09-10 17:56:54 -03:00
Matheus 79752fb5e0 sock: pass protocol to sockets 2026-09-10 16:41:21 -03:00
Matheus afd9d8d3a0 rename: RENAME_NOREPLACE 2026-07-14 16:37:48 -03:00
Matheus 1512b2f3c6 mm: properly implement page locking 2026-07-08 01:37:12 -03:00
Matheus f46d85fe6d socket: fix close shutdown properly 2026-07-07 16:49:45 -03:00
Matheus c05163f191 socket: zero addresses on accept/recv by default 2026-07-07 11:24:44 -03:00
Matheus bf03d99211 getsockname: remove print 2026-07-07 01:14:49 -03:00
Matheus 7f8fd07f39 sock: sock_copy_addr_to_user 2026-07-05 16:16:05 -03:00
Matheus 239c267ed3 mm: rename vmm api to mm 2026-07-01 15:00:46 -03:00
Matheus d890eb5fb2 mm: vmmcache -> mm_cache 2026-07-01 12:25:18 -03:00
Matheus 6f8700e678 mm: refactor pmm -> page 2026-07-01 11:56:06 -03:00
Matheus 17334c8533 advlock: general fixes 2026-06-29 11:33:03 -03:00
Matheus 85e12f7e7b stat: fit AT_EMPTY_PATH 2026-06-28 11:45:17 -03:00
Matheus b74f36e984 kernel: implement eventfs/eventfd 2026-06-18 01:53:59 -03:00
Matheus 29bae6bda1 fcntl: stub F_GETLK64 2026-06-17 23:11:13 -03:00
Matheus 4cbc9ddfb9 fcntl: bug fixes 2026-06-16 21:03:22 -03:00
Matheus 659b29ef4e syscalls: implement sysctl and add process listing 2026-06-09 17:47:27 -03:00
Matheus 1a557b7a20 localsocket: implement SOCK_SEQPACKET and a bunch of SCM_RIGHTS fixes 2026-06-04 23:19:01 -03:00
Matheus 59e4cc9fbf futex: misc fixes 2026-06-04 11:38:49 -03:00
Matheus 2f27f20b1a poll: fix ppoll signal masking 2026-06-03 20:07:50 -03:00
Matheus 9eb54353a1 stat: fix use of unitialized memory 2026-05-31 21:25:34 -03:00
Matheus 8a94de445f sendmsg: support MSG_DONTWAIT 2026-05-30 12:45:28 -03:00
Matheus 762552ed5f syscalls: setpriority 2026-05-28 23:52:07 -03:00
Matheus d867dc0ad5 waitpid: fix deadlock 2026-05-23 16:57:22 -03:00
Matheus f1d4ee7e5d fchownat: fix possible privilege escalation 2026-05-13 23:50:10 -03:00
Matheus a02c7cb731 open: fix flags bug 2026-05-13 23:50:10 -03:00
Matheus 42cec91cb9 syscalls: misc vulnerability fixes 2026-04-28 21:27:51 -03:00
Matheus 37c3d7f98b sigreturn: fix use of user pointer in arch_extracontext_copy 2026-04-28 21:14:36 -03:00
Matheus 4af4c3e26e pread/pwrite: fix vulnerability 2026-04-28 18:52:49 -03:00
iretq 6086393571 abi: move CLOCK_* defines to abi.h 2026-04-25 00:55:44 -03:00
Matheus 7f94276b0b faccessat: fix use of unitialized variable 2026-04-23 23:07:16 -03:00
Matheus 6678472362 futex: statically define table and mutex 2026-04-23 15:31:05 -03:00
Matheus 71dd6d1125 x86-64: enable smep and smap 2026-04-23 15:29:43 -03:00
Matheus a15b034aa8 syscalls: implement clock_getres 2026-04-23 12:10:26 -03:00
Matheus 8b41077128 socketpair: support flags 2026-04-23 12:09:55 -03:00
Matheus 3dfb6b5a8c waitpid: use event instead of busy loop when waiting for threads to die 2026-04-16 22:41:43 -03:00
Matheus 57119aebdc setitimer: fix invalid pointer access 2026-04-16 18:48:25 -03:00
Matheus 452c95c577 open: fix possible use of unitialized variable 2026-04-16 18:35:39 -03:00