Commit Graph

1760 Commits

Author SHA1 Message Date
Matheus 111a8696d8 mmu: move tlb shootdown to IPL_MAX
Currently, with IPL_IGNORE, tlb shootdown is not being treated as an
irq and thus does not contribute to the irq depth. Move it to the
highest possible IPL.
2026-10-06 11:51:02 -03:00
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 b617f11347 mlibc: support GLOB_ALTDIRFUNC 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
Matheus 855b1186da ports: mupdf 2026-09-24 22:19:44 -03:00
Matheus 52e87fa847 mlibc: bump 2026-09-24 21:12:16 -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
Matheus c337f763ae Merge pull request #40 from primeseven1/rewrite
Fix sysret with a non-canonical return RIP
2026-09-22 17:51:42 -03:00
Christopher Fandrich a6fd10c211 syscall: Properly handle a non-canonical return RIP 2026-09-22 13:11:10 -07:00
Matheus 0a21f7c852 astral: bump revision 2026-09-22 08:16:20 -03:00
Matheus 4425755cf5 classicube: port 2026-09-22 02:02:05 -03:00
Matheus 0fcb7c0be1 distro-files: generate machine-id on first boot 2026-09-22 02:01:33 -03:00
Matheus 42e5974e02 ports: update fontconfog/freetype and add poppler 2026-09-19 12:52:52 -03: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