Andreas Kling
612a5225fa
Kernel: Convert klog() => AK::Format in StdLib
2021-03-12 12:28:27 +01:00
Andreas Kling
a8fcdb8314
Kernel: Convert klog() => AK::Format in APIC
2021-03-12 12:24:08 +01:00
Andreas Kling
6bfba0f576
Kernel: Convert klog() => AK::Format in IDEChannel
2021-03-12 12:16:06 +01:00
Andreas Kling
8b0ebe3e30
Kernel: Convert klog() => AK::Format in DiskPartition
2021-03-12 12:12:00 +01:00
Andreas Kling
f9aace29ec
Kernel: Convert klog() => AK::Format in NetworkTask
2021-03-12 11:59:41 +01:00
Andreas Kling
201d35e70f
Kernel: Convert klog() => dbgln() in BXVGADevice
2021-03-12 11:40:41 +01:00
Andreas Kling
3985468e83
Kernel: Convert klog() => AK::Format in PurgeablePageRanges
2021-03-12 11:38:43 +01:00
Andreas Kling
72cccfddbf
Kernel: Convert klog() => AK::Format in APICTimer
2021-03-12 11:30:33 +01:00
Andreas Kling
bc925f57bb
Kernel: Convert klog() => AK::Format in ACPI::Parser
2021-03-12 11:27:59 +01:00
Andreas Kling
b8ad3d7ccf
Kernel: Convert klog() => AK::Format in RTL8139NetworkAdapter
2021-03-12 11:21:34 +01:00
Andreas Kling
6a3224d040
Kernel: Remove debug spam in DevFS
2021-03-12 11:12:50 +01:00
Andreas Kling
38f11cc1ba
Everywhere: Rename "logo" key to "super" key
...
This seems to be the most common way to refer to this key, so let's
call it what people actually call it.
2021-03-11 18:55:16 +01:00
Andreas Kling
b1e0e2ad4a
Kernel: Suppress logging during kmalloc heap expansion
...
The system is extremely sensitive to heap allocations during heap
expansion. This was causing frequent OOM panics under various loads.
Work around the issue for now by putting the logging behind
KMALLOC_DEBUG. Ideally dmesgln() & friends would not reqiure any
heap allocations, but we're not there right now.
Fixes #5724 .
2021-03-11 15:28:42 +01:00
Andreas Kling
9853a9bc8a
Kernel: Always protect process data immediately after construction
2021-03-11 14:46:48 +01:00
Andreas Kling
49a0f40ff0
Kernel: Inherit the dumpable flag on sys$fork()
...
This regressed at some point recently. All children were non-dumpable
until manually opting into it.
2021-03-11 14:35:37 +01:00
Andreas Kling
1608ef37d8
Kernel: Move process termination status/signal into protected data
2021-03-11 14:24:08 +01:00
Andreas Kling
4916b5c130
Kernel: Move process thread lists into protected data
2021-03-11 14:21:49 +01:00
Andreas Kling
b7b7a48c66
Kernel: Move process signal trampoline address into protected data
2021-03-11 14:21:49 +01:00
Andreas Kling
08e0e2eb41
Kernel: Move process umask into protected data :^)
2021-03-11 14:21:49 +01:00
Andreas Kling
90c0f9664e
Kernel: Don't keep protected Process data in a separate allocation
...
The previous architecture had a huge flaw: the pointer to the protected
data was itself unprotected, allowing you to overwrite it at any time.
This patch reorganizes the protected data so it's part of the Process
class itself. (Actually, it's a new ProcessBase helper class.)
We use the first 4 KB of Process objects themselves as the new storage
location for protected data. Then we make Process objects page-aligned
using MAKE_ALIGNED_ALLOCATED.
This allows us to easily turn on/off write-protection for everything in
the ProcessBase portion of Process. :^)
Thanks to @bugaevc for pointing out the flaw! This is still not perfect
but it's an improvement.
2021-03-11 14:21:49 +01:00
Andreas Kling
4fcc637e29
Kernel: Add MAKE_ALIGNED_ALLOCATED helper macro
...
This macro inserts operator new/delete into a class, allowing you
to very easily specify a specific heap alignment.
2021-03-11 14:21:49 +01:00
Andreas Kling
96fb3d4a11
Kernel: Add MemoryManager::set_page_writable_direct()
...
This helper function goes directly to the page tables and makes a
virtual address writable or non-writable.
2021-03-11 14:21:49 +01:00
Andreas Kling
40f2abf7c3
Kernel: Allow kmalloc_aligned() alignment up to 4096
...
This allows us to get kmalloc() memory aligned to the VM page size.
2021-03-11 14:21:49 +01:00
Andreas Kling
a7b6282086
Kernel: Silence debug spam about chown and symlink during boot
2021-03-11 14:21:49 +01:00
Andreas Kling
de6c5128fd
Kernel: Move process pledge promises into protected data
2021-03-10 22:50:00 +01:00
Andreas Kling
37ad880660
Kernel: Move process "dumpable" flag into protected data
2021-03-10 22:42:07 +01:00
Andreas Kling
3d27269f13
Kernel: Move process parent PID into protected data :^)
2021-03-10 22:30:02 +01:00
Andreas Kling
d677a73b0e
Kernel: Move process extra_gids into protected data :^)
2021-03-10 22:30:02 +01:00
Andreas Kling
cbcf891040
Kernel: Move select Process members into protected memory
...
Process member variable like m_euid are very valuable targets for
kernel exploits and until now they have been writable at all times.
This patch moves m_euid along with a whole bunch of other members
into a new Process::ProtectedData struct. This struct is remapped
as read-only memory whenever we don't need to write to it.
This means that a kernel write primitive is no longer enough to
overwrite a process's effective UID, you must first unprotect the
protected data where the UID is stored. :^)
2021-03-10 22:30:02 +01:00
Andreas Kling
839d2d70a4
Kernel: Add non-const KBuffer::impl() getter
2021-03-10 22:30:02 +01:00
Andreas Kling
9b5c9efd73
Kernel: Build with -Wvla
...
Now that all use of VLA's (variable-length arrays) has been purged from
the kernel, let's make sure we don't reintroduce them.
2021-03-10 16:33:55 +01:00
Andreas Kling
e58a600d52
Kernel: Remove VLA usage in Ext2FS block traversal code
...
This was using up to 12KB of kernel stack in the triply indirect case
and looks generally spooky. Let's just allocate a ByteBuffer for now
and take the performance hit (of heap allocation). Longer term we can
reorganize the code to reduce the majority of the heap churn.
2021-03-10 16:33:47 +01:00
Andreas Kling
3dbb9c8448
Kernel: Turn a VLA into a statically-sized array in dump_backtrace()
2021-03-10 16:23:11 +01:00
Andreas Kling
54f6436598
Kernel: Convert klog() => dmesgln() in TCPSocket
2021-03-09 23:06:47 +01:00
Andreas Kling
b007bc07b7
Kernel: Convert klog() => dmesgln() in MemoryManager
2021-03-09 22:44:04 +01:00
Andreas Kling
232738fb7a
Kernel: Use dbgln_if() and PANIC() in Thread.cpp
2021-03-09 22:35:51 +01:00
Andreas Kling
c67d550df1
Kernel: Convert klog() => dmesgln() in IPv4Socket
2021-03-09 22:25:09 +01:00
Andreas Kling
b12734cf13
Kernel: Convert klog() => dmesgln() in PageDirectory
2021-03-09 22:10:41 +01:00
Andreas Kling
65131334e7
Kernel: Convert klog() => dmesgln() in E1000NetworkAdapter
2021-03-09 22:10:41 +01:00
Andreas Kling
c8a8923842
Kernel: Convert klog() => dmesgln() in init()
2021-03-09 22:10:41 +01:00
Andreas Kling
ac1c01cc30
Kernel: Convert klog() => dmesgln() in ARP/routing code
2021-03-09 22:10:41 +01:00
Andreas Kling
aef6474ea7
Kernel: Convert klog() to dmesgln() in Region
2021-03-09 22:10:41 +01:00
Andreas Kling
07564577c0
Kernel: Convert klog() => dmesgln() in AnonymousVMObject
2021-03-09 22:10:41 +01:00
Andreas Kling
db0bca4153
Kernel: Convert klog() => dmesgln() in HPET
2021-03-09 22:10:41 +01:00
Andreas Kling
ed8d68d8fe
Kernel: Convert klog() => dmesgln() in KernelRng
2021-03-09 22:10:41 +01:00
Andreas Kling
a906670d1c
Kernel: Convert klog() => dmesgln() in VMWareBackdoor
2021-03-09 22:10:41 +01:00
Andreas Kling
5fd3006db2
Kernel: Convert klog() => dmesgln() in PS2MouseDevice
2021-03-09 22:10:41 +01:00
Andreas Kling
52ef08081c
Kernel: Remove some unused things in kmalloc.cpp
2021-03-09 22:10:41 +01:00
Andreas Kling
cb4fcaa4b5
Kernel: Convert klog() => dmesgln() in kmalloc
2021-03-09 22:10:41 +01:00
Andreas Kling
10f10abaa3
Kernel: Convert klog() => dmesgln() in filesystem code
2021-03-09 22:10:41 +01:00