ladybird/Kernel
Tom a95b726fd8 Kernel: Fix race causing modifying a Process to fail with a panic
The ProtectedDataMutationScope cannot blindly assume that there is only
exactly one thread at a time that may want to unprotect the Process.
Most of the time the big lock guaranteed this, but there are some cases
such as finalization (among others) where this is not necessarily
guaranteed.

This fixes random panics due to access violations when the
ProtectedDataMutationScope protects the Process instance while another
is still modifying it.

Fixes #8512
2021-07-07 21:57:01 +02:00
..
ACPI Kernel/ACPI: Don't ask from TypedMapping to map 2 pages if unnecessary 2021-07-02 13:16:12 +02:00
API Kernel+KeyboardSettings: Remove numlock syscall and implement ioctl 2021-07-07 10:44:20 +02:00
Arch Kernel/x86_64: Print if machine doesn't support x86_64 mode 2021-07-06 19:01:27 +02:00
Bus Kernel: Clarify and make it easy to not use raw numbers 2021-07-03 16:28:49 +02:00
Devices Kernel+KeyboardSettings: Remove numlock syscall and implement ioctl 2021-07-07 10:44:20 +02:00
FileSystem Kernel: Custody::absolute_path() => try_create_absolute_path() 2021-07-07 15:32:17 +02:00
Graphics Kernel: Don't remap BochsGraphicsAdapter MMIO registers on every access 2021-07-06 12:24:51 +02:00
Heap Everywhere: Fix some alignment issues 2021-07-03 01:56:31 +04:30
Interrupts Kernel: Hide the implementation detail that MSRs use two registers 2021-07-04 01:07:28 +02:00
Modules Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Net Kernel: Fix kernel crash when remote peer resets unexpectedly 2021-07-07 01:18:25 +02:00
Storage Kernel: Promote various integers to 64 bits in storage layer 2021-07-06 00:16:22 +02:00
Syscalls Kernel: Custody::absolute_path() => try_create_absolute_path() 2021-07-07 15:32:17 +02:00
Tasks Kernel: Move special sections into Sections.h 2021-06-24 00:38:23 +02:00
Time Kernel: Add missing override specifiers 2021-07-03 01:56:31 +04:30
TTY Kernel: Fix miscellaneous warnings when building with Clang 2021-07-03 01:56:31 +04:30
VirtIO Kernel: Clarify and make it easy to not use raw numbers 2021-07-03 16:28:49 +02:00
VM Kernel/TypedMapping: Round up length with offset_in_page 2021-07-02 13:16:12 +02:00
AddressSanitizer.cpp Everywhere: Use bgianf@serenityos.org for my copyright attribution 2021-04-22 21:15:54 +02:00
AddressSanitizer.h Everywhere: Use bgianf@serenityos.org for my copyright attribution 2021-04-22 21:15:54 +02:00
Assertions.h Kernel: Add [[unlikely]] attribute to VERIFY 2021-06-29 22:57:52 +04:30
AtomicEdgeAction.h Kernel: Add AtomicEdgeAction class 2021-07-07 21:57:01 +02:00
CMakeLists.txt Kernel: Replace usage of LexicalPath with KLexicalPath 2021-07-07 15:32:17 +02:00
CMOS.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
CMOS.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
CommandLine.cpp Kernel: Move special sections into Sections.h 2021-06-24 00:38:23 +02:00
CommandLine.h Kernel/CommandLine: Add option to disable physical networking hardware 2021-06-09 22:44:09 +04:30
ConsoleDevice.cpp Kernel: Move special sections into Sections.h 2021-06-24 00:38:23 +02:00
ConsoleDevice.h Kernel: Rename Console => ConsoleDevice 2021-05-16 19:58:33 +02:00
CoreDump.cpp Kernel: Replace usage of LexicalPath with KLexicalPath 2021-07-07 15:32:17 +02:00
CoreDump.h Kernel: Replace usage of LexicalPath with KLexicalPath 2021-07-07 15:32:17 +02:00
Debug.h.in USB: Further Implement USB Structures 2021-06-12 18:17:25 +04:30
DoubleBuffer.cpp Kernel: Pull apart CPU.h 2021-06-24 00:38:23 +02:00
DoubleBuffer.h Kernel: Use KResultOr<size_t> for the DoubleBuffer class 2021-06-16 21:29:36 +02:00
Forward.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
FutexQueue.cpp Kernel: Fix futex race that could lead to thread waiting forever 2021-07-07 10:05:55 +02:00
FutexQueue.h Kernel: Fix futex race that could lead to thread waiting forever 2021-07-07 10:05:55 +02:00
GlobalProcessExposed.cpp Kernel/PCI: Move the PCI components as a subfolder to the Bus directory 2021-07-02 13:16:12 +02:00
init.cpp Kernel/USB: Move the USB components as a subfolder to the Bus directory 2021-07-02 13:16:12 +02:00
IO.h Kernel: Specify I/O size for BMIDEChannel 2021-06-28 15:55:00 +02:00
KBuffer.h Kernel: Fix always-true comparison warnings 2021-07-03 01:56:31 +04:30
KBufferBuilder.cpp Everywhere: Use nothrow new with adopt_{ref,own}_if_nonnull 2021-06-24 17:35:49 +04:30
KBufferBuilder.h Kernel: Avoid allocations in KBufferBuilder::appendff 2021-05-13 08:27:42 +02:00
KLexicalPath.cpp Kernel: Add KLexicalPath::try_join and use it 2021-07-07 15:32:17 +02:00
KLexicalPath.h Kernel: Add KLexicalPath::try_join and use it 2021-07-07 15:32:17 +02:00
kprintf.cpp Kernel: Add dbgputch() to kstdio.h 2021-06-24 10:29:09 +02:00
KResult.h Kernel: Remove superfluous alignas(T) from KResultOr<T> 2021-06-24 17:35:49 +04:30
kstdio.h Kernel: Add dbgputch() to kstdio.h 2021-06-24 10:29:09 +02:00
KString.cpp Kernel: Add operator delete for KString 2021-06-02 22:59:39 +01:00
KString.h Kernel: Add formatter function for OwnPtr<KString> 2021-07-07 15:32:17 +02:00
KSyms.cpp Kernel+LibELF: Don't demangle symbols in the kernel 2021-07-06 19:08:22 +02:00
KSyms.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
linker.ld Kernel: Make sure the kernel's ELF PHDRs don't use rwx 2021-06-19 12:54:33 +02:00
Lock.cpp Kernel: Utilize AK::SourceLocation for LOCK_DEBUG instrumentation. 2021-04-25 09:38:27 +02:00
Lock.h Kernel: Pull apart CPU.h 2021-06-24 00:38:23 +02:00
LockMode.h Everywhere: Use "the SerenityOS developers." in copyright headers 2021-04-29 00:59:26 +02:00
mkmap.sh Kernel+LibELF: Don't demangle symbols in the kernel 2021-07-06 19:08:22 +02:00
Module.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Multiboot.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Panic.cpp Kernel: Pull apart CPU.h 2021-06-24 00:38:23 +02:00
Panic.h Kernel/Graphics + SystemServer: Support text mode properly 2021-05-16 19:58:33 +02:00
PerformanceEventBuffer.cpp Kernel: Remove some unnecessary JSON related includes 2021-06-29 22:11:10 +02:00
PerformanceEventBuffer.h Kernel: Add support for profiling kmalloc()/kfree() 2021-05-19 22:51:42 +02:00
PerformanceManager.h Kernel+Userland: Add x86_64 registers to RegisterState/PtraceRegisters 2021-06-27 15:46:42 +02:00
PhysicalAddress.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Process.cpp Kernel: Fix race causing modifying a Process to fail with a panic 2021-07-07 21:57:01 +02:00
Process.h Kernel: Fix race causing modifying a Process to fail with a panic 2021-07-07 21:57:01 +02:00
ProcessExposed.cpp Kernel/ProcFS: Clean dead processes properly 2021-07-02 13:16:12 +02:00
ProcessExposed.h Kernel/ProcFS: Lazily allocate all sub components of a PID folder 2021-07-02 13:16:12 +02:00
ProcessGroup.cpp Everywhere: Use nothrow new with adopt_{ref,own}_if_nonnull 2021-06-24 17:35:49 +04:30
ProcessGroup.h Kernel: Switch ProcessGroup to IntrusiveList from InlineLinkedList 2021-06-03 13:27:40 +02:00
ProcessSpecificExposed.cpp Kernel/ProcFS: Lazily allocate all sub components of a PID folder 2021-07-02 13:16:12 +02:00
Random.cpp Kernel: Don't use function-level static variables 2021-06-24 09:27:13 +02:00
Random.h Kernel: Pull apart CPU.h 2021-06-24 00:38:23 +02:00
RTC.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
RTC.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Scheduler.cpp Kernel+LibC: Remove sys$donate() 2021-07-05 23:30:15 +02:00
Scheduler.h Kernel+LibC: Remove sys$donate() 2021-07-05 23:30:15 +02:00
Sections.h Kernel: Get rid of of some of the duplicate kernel base address macros 2021-07-05 12:28:45 +02:00
SpinLock.h Kernel: Pull apart CPU.h 2021-06-24 00:38:23 +02:00
StdLib.cpp Kernel: Fix memcpy and memset for x86_64 2021-06-26 11:08:52 +02:00
StdLib.h Everywhere: Fix incorrect usages of AK::Checked 2021-07-04 20:08:28 +01:00
Syscall.cpp Kernel: Replace raw asm functions with naked ones 2021-07-05 16:40:00 +02:00
SystemExposed.cpp Kernel: Introduce the new SysFS 2021-06-29 20:53:59 +02:00
SystemExposed.h Kernel: ProcFS and SysFS component indices should be InodeIndex 2021-06-29 23:07:02 +02:00
Thread.cpp Kernel+LibELF: Don't demangle symbols in the kernel 2021-07-06 19:08:22 +02:00
Thread.h Kernel+LibC: Remove sys$donate() 2021-07-05 23:30:15 +02:00
ThreadBlockers.cpp Kernel: Fix error propagation if Thread::WaitBlocker constructor fails 2021-06-07 09:43:30 +02:00
ThreadTracer.cpp Kernel: Pull apart CPU.h 2021-06-24 00:38:23 +02:00
ThreadTracer.h Everywhere: Use nothrow new with adopt_{ref,own}_if_nonnull 2021-06-24 17:35:49 +04:30
TimerQueue.cpp Kernel: Fix use after AK::move in Kernel::TimerQueue 2021-06-25 19:26:30 +02:00
TimerQueue.h Kernel: Replace TimerQueue InlinedLinkedList usage with IntrusiveList 2021-06-16 10:40:01 +02:00
UBSanitizer.cpp Kernel: Pull apart CPU.h 2021-06-24 00:38:23 +02:00
UnixTypes.h LibC: Define MSG_OOB 2021-06-04 10:39:41 +02:00
UnveilNode.h Kernel: Allow unveiling subfolders regardless of parent's permissions 2021-06-08 12:15:04 +02:00
UserOrKernelBuffer.cpp Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
UserOrKernelBuffer.h Kernel: Remove obsolete size_t casts 2021-06-17 19:52:54 +02:00
VirtualAddress.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
WaitQueue.cpp Everywhere: Use "the SerenityOS developers." in copyright headers 2021-04-29 00:59:26 +02:00
WaitQueue.h Everywhere: Use "the SerenityOS developers." in copyright headers 2021-04-29 00:59:26 +02:00
WorkQueue.cpp Kernel: Move special sections into Sections.h 2021-06-24 00:38:23 +02:00
WorkQueue.h Kernel: Use plain Function objects for the WorkQueue 2021-05-19 21:36:57 +02:00