Commit Graph

1284 Commits

Author SHA1 Message Date
Matheus 011309d43d cpu: add irq depth counting
Add a way of checking if a cpu is in the middle of handling an irq and
how deep it is into it. This will allow for future code to conditionally
run only in/outside interrupts.
2026-10-06 11:51:01 -03:00
Matheus 6c65a90a5f mm: properly fork shared file mappings
mm_fork_context() currently maps shared chdev mappings 1:1 when forking
a range. The issue with this approach is that chdev mappings are not
guaranteed to be backed by physical memory, and thus cannot safely be
refcounted. This can lead to issues on devices with more complex buffer
lifetimes.

To allow for internal book-keeping, do not map shared chdev memory on
fork and instead allow it to go through the entire fault-in process
again.
2026-10-06 11:51:01 -03:00
Matheus 0cdd03eba8 smp: fix race between cpu exposure and smp init
The SMP code exposes that a cpu woke up before it is properly
initialized in sched_ap_entry(). Fix this by initializing it first,
exposing it and then stopping the bootstrap thread.
2026-10-06 11:51:01 -03:00
Matheus 1ed159489d scheduler: only run load balance when appropriate
Prevent the load balancer from balancing when running uniprocessor
machines and when not all CPUs are online yet.

This prevents a race between ap initialization and load balancing.
2026-10-06 11:51:00 -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 77520c00c5 pty: use new anonymous devfs operations
Switch the old hacky way of registering a new pty master into using the
new anonymous api.
2026-10-06 11:51:00 -03:00
Matheus 1c65a2c891 devfs: add anonymous variants to register/remove
The current devfs code requires registered devices to have a name on
creation. This makes temporary/hidden devices like pty master ends
appear for a split second on the devfs tree.

Add a way of registering/removing devfs nodes which do not have a name
on the tree.
2026-10-06 11:50:59 -03:00
Matheus d1765b22b5 tty: fix lifetime issue in tty_unregister()
The tty_unregister code removes the tty's vnode from the devfs mappings.
This causes a reference to be dropped, which can then cause the tty to
be freed and the remaining code in tty_unregister does a UAF.

Fix this by holding a reference across the unregister operation.
2026-10-06 11:50:59 -03:00
Matheus cc069554ae vfs: fix UAF on VOP_RELEASE 2026-10-06 11:50:59 -03:00
Matheus e8da0eba6a statvfs: handle vnodes without a vfs 2026-10-06 11:50:58 -03:00
Matheus eda6bca466 tmpfs: remove bad print 2026-10-06 11:50:58 -03:00
Matheus efe699bd2f x86_64 cpu: always inline asm helpers 2026-10-06 11:50:57 -03:00
Matheus 9e028dc059 tcp: copy port to listening tcb chilren 2026-10-06 11:50:57 -03:00
Matheus bf7a4a9d72 vionet: fix transmit publication ordering 2026-10-06 11:50:56 -03:00
Matheus 2867889202 vfs: fix possible use-after-free 2026-10-06 11:50:56 -03:00
Matheus 4500f1f3ec kernel: add nofblog option 2026-10-06 11:50:56 -03:00
Matheus f7052a78c1 Merge pull request #41 from wnsntgs/Kernel/Lib/PushLockOptimizations
Avoid repeated push lock waiter queue walks
2026-09-28 16:39:43 -03:00
wnstngs 2db436c700 kernel: guard pushlock assertions with DEBUG_LOCKS 2026-09-28 22:35:13 +03:00
wnstngs 4eab391004 kernel: avoid repeated push lock waiter queue walks 2026-09-24 23:17:53 +03:00
Matheus ad1740738b Merge pull request #42 from wnsntgs/Kernel/Lib/SemaphoreWakeupFix
Fix semaphore wakeup race
2026-09-23 15:11:05 -03:00
Matheus 68af759f20 Merge pull request #43 from wnsntgs/Kernel/Sched/NanosleepTimerFix
Fix timer cleanup in interrupted nanosleep
2026-09-23 15:09:28 -03:00
Matheus 6ac80173b4 Merge pull request #44 from wnsntgs/Kernel/Lib/EventDetachFix
Detach all event listener attachments
2026-09-23 15:07:41 -03:00
wnstngs 3a952c96b1 kernel: fix semaphore wakeup race 2026-09-23 20:48:29 +03:00
wnstngs 6780626f29 kernel: cancel interrupted nanosleep timer without remaining pointer 2026-09-23 20:48:29 +03:00
wnstngs 3ecfb0ffb9 kernel: detach all event listener attachments 2026-09-23 20:48:29 +03:00
Christopher Fandrich a6fd10c211 syscall: Properly handle a non-canonical return RIP 2026-09-22 13:11:10 -07:00
Matheus 8d82a8fdf1 time: fix diffus 2026-09-19 12:50:23 -03:00
Matheus c347afc761 sched: if last cpu is idle, run on it 2026-09-19 12:50:00 -03:00
Matheus 7a533242ad scheduler: make idle cpus steal work 2026-09-16 00:22:05 -03:00
Matheus 10cd22207d smp: make cpu internal id match offset into cpu table 2026-09-15 23:40:53 -03:00
Matheus 74c0bb2450 sched: actually set cpus as idle 2026-09-15 23:19:56 -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 b9a5ead597 mm: add full page in flag for get physical 2026-09-15 14:45:56 -03:00
Matheus 79262a7c83 netdev: protect wlan ioctls behind auth 2026-09-14 14:06:59 -03:00
Matheus cdee765643 raw sockets: make creating them a privileged operation 2026-09-14 14:03:39 -03:00
Matheus d1cc050d76 sched: fix race on thread switching 2026-09-14 13:21:47 -03:00
Matheus f386f8e33f ext2: fix compilation 2026-09-14 10:55:05 -03:00
Matheus 3eaca91ff1 vfs: properly sync metadata 2026-09-14 10:11:31 -03:00
Matheus f0dc54e027 netdev: cleanup and abstraction 2026-09-14 09:47:07 -03:00
Matheus b1c82ae6af u80211_drv: bump 2026-09-14 09:23:42 -03:00
Matheus 5b088742de wlan: map u80211/drv errors into astral errnos 2026-09-14 09:14:34 -03:00
Matheus f7b4348384 net: bump u80211 2026-09-14 09:08:02 -03:00
Matheus 565c997bd9 Merge pull request #38 from wnsntgs/pushlock
Improve push lock wakeup behavior under contention
2026-09-11 00:42:59 -03:00
Matheus e70a6cde76 u80211_drv: fix group key hw encryption in rtl8188eu 2026-09-10 23:58:26 -03:00
Matheus 433fd852df u80211: fix destination check on rx 2026-09-10 23:58:26 -03:00
Matheus d9ea361caf ipv4: fix receival of different sized headers 2026-09-10 23:58:25 -03:00
Matheus 5aca46e22c socket: SIOCGIFINDEX 2026-09-10 23:58:25 -03:00
Matheus 66b0cb9076 sockets: expose raw sockets to userspace 2026-09-10 17:56:54 -03:00
Matheus e17ba000e2 raw sockets: finish implementation 2026-09-10 17:19:35 -03:00