ladybird/Kernel
Idan Horowitz 1d96c30488 Kernel: Stop leaking leftover committed cow pages from forked processes
Since both the parent process and child process hold a reference to the
COW committed set, once the child process exits, the committed COW
pages are effectively leaked, only being slowly re-claimed each time
the parent process writes to one of them, realizing it's no longer
shared, and uncommitting it.
In order to mitigate this we now hold a weak reference the parent
VMObject from which the pages are cloned, and we use it on destruction
when available to drop the reference to the committed set from it as
well.
2022-07-10 22:17:21 +03:00
..
API Kernel: Implement sigsuspend using a SignalBlocker 2022-07-08 22:27:38 +00:00
Arch Kernel: Do not disable userland access to the RDTSC instruction 2022-07-08 22:27:38 +00:00
Bus Kernel/USB: Move buffer allocation from USB transfer to USB pipe 2022-07-03 01:15:07 +02:00
Devices Kernel+SystemServer: Make KCOVDevice a character device 2022-07-10 14:57:55 +02:00
FileSystem Kernel: Don't let locks of the same owner conflict with each other 2022-07-08 22:27:38 +00:00
Firmware Kerenl/Firmware: Add map_ebda and map_bios methods in the original place 2022-06-17 11:01:27 +02:00
Graphics Kernel/Graphics: Move GenericDisplayConnector code to a new sub-folder 2022-06-25 11:32:09 +01:00
Heap Kernel: Move allocate_unbacked_region_anywhere() to MemoryManager 2022-04-05 13:45:10 +02:00
Interrupts Kernel: Move IRQController and InterruptManagement to Arch directory 2022-06-02 13:14:12 +01:00
Library Kernel+AK: Split Weakable.h into userspace and kernel variants 2022-06-15 17:15:04 +02:00
Locking Kernel: Verify mutex big lock behavior 2022-04-09 15:55:20 +02:00
Memory Kernel: Stop leaking leftover committed cow pages from forked processes 2022-07-10 22:17:21 +03:00
Net Kernel: Support sys$connect to LocalSockets with short sockaddr_uns 2022-07-10 14:24:34 +02:00
Prekernel Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Storage Kernel/Storage: Do proper locking & reset in the AHCIController code 2022-07-08 01:06:47 +03:00
Syscalls Kernel: Stop leaking first thread on errors in sys$fork 2022-07-10 22:17:21 +03:00
Tasks Kernel: Unify Kernel task names for consistency 2022-06-05 14:09:44 +01:00
Time Kernel: Make TimeManagement::boot_time() static 2022-06-15 17:15:04 +02:00
TTY LibVT+Kernel: Separate the caret shapes and its steadiness 2022-06-22 12:12:00 +01:00
AddressSanitizer.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
AddressSanitizer.h Everywhere: Use bgianf@serenityos.org for my copyright attribution 2021-04-22 21:15:54 +02:00
Assertions.h Kernel: Do not implement VERIFY_NOT_REACHED() as VERIFY(false) 2022-05-12 13:12:37 +02:00
AtomicEdgeAction.h Kernel: Add per platform Processor.h headers 2021-10-14 01:23:08 +01:00
BootInfo.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
CMakeLists.txt Kernel/Storage: Rename AHCIPortHandler => AHCIInterruptHandler 2022-07-08 01:06:47 +03:00
CMOS.cpp Kernel: Move x86 IO instructions code into the x86 specific folder 2021-10-01 12:27:20 +02:00
CMOS.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
CommandLine.cpp Kernel/Graphics: Simplify the feature level of the Graphics subsystem 2022-05-05 20:55:57 +02:00
CommandLine.h Kernel/Graphics: Simplify the feature level of the Graphics subsystem 2022-05-05 20:55:57 +02:00
Coredump.cpp Kernel: Store AddressSpace memory regions in an IntrusiveRedBlackTree 2022-04-03 21:51:58 +02:00
Coredump.h Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
Debug.h.in Kernel: Stop debug spam when using mmap on /dev/mem device 2022-04-01 19:59:45 +02:00
DoubleBuffer.cpp Kernel: Implement InterruptDisabler using generic Processor functions 2022-06-02 13:14:12 +01:00
DoubleBuffer.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
embedmap.sh Kernel: Make new kernel build process work on macOS 2021-07-15 11:04:30 +02:00
Forward.h Kernel/SysFS: Migrate components code from SysFS.cpp to the SysFS folder 2022-06-17 11:01:27 +02:00
FutexQueue.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
FutexQueue.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
GlobalProcessExposed.cpp Kernel: Move IRQController and InterruptManagement to Arch directory 2022-06-02 13:14:12 +01:00
init.cpp Kernel/SysFS: Stop cluttering the codebase with pieces of SysFS parts 2022-06-17 11:01:27 +02:00
KBuffer.h Kernel: Propagate overflow errors from Memory::page_round_up 2021-12-28 23:08:50 +01:00
KBufferBuilder.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
KBufferBuilder.h Kernel: Expose .length() of KBufferBuilder 2022-05-06 02:12:51 +04:30
KLexicalPath.cpp Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
KLexicalPath.h Everywhere: Pass AK::StringView by value 2021-11-11 01:27:46 +01:00
kprintf.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
kstdio.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
KString.cpp Kernel: Add an error propagating KString::format(..) API :^) 2021-11-30 11:16:35 +01:00
KString.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
KSyms.cpp Kernel: Move Kernel/Arch/x86/SafeMem.h to Kernel/Arch/SafeMem.h 2022-05-03 21:53:36 +02:00
KSyms.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
MiniStdLib.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
mkmap.sh Kernel: Use the toolchain's nm in mkmap.sh 2021-12-30 18:10:51 +01:00
Multiboot.h Kernel: Only use multiboot framebuffer details if present 2022-01-06 22:34:11 +01:00
Panic.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Panic.h Kernel: Implement __panic() for the aarch64 Kernel 2022-05-03 21:53:36 +02:00
PerformanceEventBuffer.cpp Kernel: Move Kernel/Arch/x86/SafeMem.h to Kernel/Arch/SafeMem.h 2022-05-03 21:53:36 +02:00
PerformanceEventBuffer.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
PerformanceManager.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
PhysicalAddress.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Process.cpp Kernel: Copy signal handlers when forking 2022-07-05 20:58:38 +03:00
Process.h Kernel+LibC+LibCore: Pass fcntl extra argument as pointer-sized variable 2022-07-10 20:09:11 +02:00
ProcessExposed.cpp Kernel: Add /proc/{pid}/children to ProcFS 2022-05-06 02:12:51 +04:30
ProcessExposed.h Kernel: Create /proc/pid/cmdline to expose process arguments in procfs 2022-06-19 09:05:35 +02:00
ProcessGroup.cpp Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
ProcessGroup.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
ProcessProcFSTraits.cpp Kernel: Create /proc/pid/cmdline to expose process arguments in procfs 2022-06-19 09:05:35 +02:00
ProcessSpecificExposed.cpp Kernel: Create /proc/pid/cmdline to expose process arguments in procfs 2022-06-19 09:05:35 +02:00
Random.cpp Kernel: Make KernelRng not inherit from Lockable 2021-12-26 21:22:59 +01:00
Random.h Kernel: Make PhysicalRegion.cpp compile on aarch64 2022-04-02 19:34:20 -07:00
RTC.cpp Everywhere: Fix many spelling errors 2022-01-07 10:56:59 +01:00
RTC.h Kernel: Ensure we read valid values from the RTC CMOS registers 2021-08-04 19:53:04 +02:00
SanCov.cpp Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
Scheduler.cpp Kernel: Unify Kernel task names for consistency 2022-06-05 14:09:44 +01:00
Scheduler.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Sections.h Kernel: Use the whole kernel PD range when randomizing the KASLR offset 2022-03-23 19:49:49 +02:00
StdLib.cpp Kernel: Move Kernel/Arch/x86/SafeMem.h to Kernel/Arch/SafeMem.h 2022-05-03 21:53:36 +02:00
StdLib.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Syscall.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
Thread.cpp Kernel: Unblock SignalBlocker if a signal was just unmarked as pending 2022-07-08 22:27:38 +00:00
Thread.h Kernel: Remove unused WriteNotOpen File BlockFlag 2022-07-10 14:24:34 +02:00
ThreadBlockers.cpp Kernel: Report POLLNVAL events in sys$poll instead of returning EBADF 2022-07-10 14:24:34 +02:00
ThreadTracer.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
ThreadTracer.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
TimerQueue.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
TimerQueue.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
UBSanitizer.cpp Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
UnixTypes.h Kernel: Add support for SA_SIGINFO 2022-03-04 20:07:05 +01:00
UserOrKernelBuffer.cpp Kernel: Replace KResult and KResultOr<T> with Error and ErrorOr<T> 2021-11-08 01:10:53 +01:00
UserOrKernelBuffer.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
VirtualAddress.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
WaitQueue.cpp Kernel: Don't register thread as custom data for WaitQueueBlocker 2021-08-24 01:57:11 +02:00
WaitQueue.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
WorkQueue.cpp Kernel: Unify Kernel task names for consistency 2022-06-05 14:09:44 +01:00
WorkQueue.h Kernel: Take WorkQueue item as reference instead of pointer in do_queue 2022-04-20 19:47:18 +02:00