Liav A
2929dc6bd7
Kernel: Change the timings when initiating AHCI port reset
...
The intention is to make the boot to be faster, therefore we should
decrease the time deltas in timeout loops to allow earlier break
from these.
Also, there's no need to wait 10 milliseconds before setting
the interface state to "no action request" during the reset sequence.
2021-03-13 09:52:31 +01:00
Jean-Baptiste Boric
800dca3834
Kernel: Implement triply indirect block support in Ext2FSInode
2021-03-13 09:27:18 +01:00
Jean-Baptiste Boric
facd18113b
Kernel: Modify block lists in place for Ext2FSInode::resize()
...
This significantly reduces the number of allocations/deallocations
inside the kernel when growing files as well as reducing spam in the
kernel logs.
2021-03-13 09:27:18 +01:00
Andreas Kling
f086d6db65
Kernel: Run clang-format on PIC.cpp
2021-03-12 17:38:49 +01:00
Andreas Kling
ef1e5db1d0
Everywhere: Remove klog(), dbg() and purge all LogStream usage :^)
...
Good-bye LogStream. Long live AK::Format!
2021-03-12 17:29:37 +01:00
Andreas Kling
423ed53396
Kernel: Fix rounding of PT_LOAD mappings in sys$execve()
...
We were not rounding the mappings down/up correctly, which could lead
to executables missing the last 4 KB of text and/or data.
2021-03-12 17:26:24 +01:00
Andreas Kling
4c7f486f39
Kernel: Convert klog() => AK::Format in UHCIController
2021-03-12 15:22:35 +01:00
Andreas Kling
f432f104fc
Kernel: Convert klog() => AK::Format in SB16
2021-03-12 15:22:35 +01:00
Andreas Kling
18e1d246b7
Kernel: Convert klog() => AK::Format in TestModule
2021-03-12 15:22:35 +01:00
Andreas Kling
73e06a1983
Kernel: Convert klog() => AK::Format in a handful of places
2021-03-12 15:22:35 +01:00
Andreas Kling
ad2f95e35a
Kernel: Convert klog() => AK::Format in InterruptManagement
2021-03-12 15:22:35 +01:00
Andreas Kling
8a7fe86ee0
Kernel: Convert klog() => AK::Format in Storage
2021-03-12 15:22:35 +01:00
Andreas Kling
feda905c3f
Kernel: Convert klog() => AK::Format in PCI
2021-03-12 15:22:35 +01:00
Andreas Kling
df65c8f2eb
Kernel: Convert klog() => AK::Format in IOAPIC
2021-03-12 15:22:34 +01:00
Andreas Kling
a1f37ebcb8
Kernel: Convert klog() => AK::Format in DMI
2021-03-12 15:22:34 +01:00
Andreas Kling
77b8865538
Kernel: Convert klog() => AK::Format in TimeManagement
2021-03-12 15:22:34 +01:00
Andreas Kling
c7160400d7
Kernel: Convert klog() => AK::Format in SharedIRQHandler
2021-03-12 15:22:34 +01:00
Andreas Kling
8fc3f710b3
Kernel: Convert klog() => AK::Format in MultiProcessorParser
2021-03-12 15:22:34 +01:00
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