serenity/Kernel
Andreas Kling 08e927f084 Kernel: Synchronize removals from TmpFS inode map
Previously we were uncaching inodes from TmpFSInode::one_ref_left().
This was not safe, since one_ref_left() was effectively being called
on a raw pointer after decrementing the local ref count and observing
it become 1. There was a race here where someone else could trigger
the destructor by unreffing to 0 before one_ref_left() got called,
causing us to call one_ref_left() on a deleted inode.

We fix this by using the new remove_from_secondary_lists() mechanism
in ListedRefCounted and synchronizing all access to the TmpFS inode
map with the main Inode::all_instances() lock.

There's probably a nicer way to solve this.
2022-01-11 01:12:16 +01:00
..
API Everywhere: Add serenity_dev_{makedev,major,minor} 2022-01-09 00:58:44 +01:00
Arch Kernel: Dump memory regions when crashing in ring 0 2022-01-08 16:31:14 +01:00
Bus Kernel: Use DMA helper everywhere 2022-01-09 00:45:38 +01:00
Devices Kernel: Page-align AC'97 audio buffer descriptor list 2022-01-09 19:11:29 +02:00
FileSystem Kernel: Synchronize removals from TmpFS inode map 2022-01-11 01:12:16 +01:00
Firmware Everywhere: Fix many spelling errors 2022-01-07 10:56:59 +01:00
Graphics Everywhere: Fix spelling mistakes 2022-01-07 15:44:42 +01:00
Heap Kernel: Allow preventing kmalloc and kfree 2022-01-11 00:08:58 +01:00
Interrupts Everywhere: Fix many spelling errors 2022-01-07 10:56:59 +01:00
Library Kernel: Make ListedRefCounted::unref() call optional list removal helper 2022-01-11 01:12:16 +01:00
Locking Kernel: Remove no-longer-used Lockable template 2021-12-26 21:22:59 +01:00
Memory Kernel: Remove redundant hash map of page tables in PageDirectory 2022-01-10 16:22:37 +01:00
Net Kernel: Harden Socket::pseudo_path(..) implementations against OOM 2022-01-09 12:22:52 +01:00
Prekernel Everywhere: Fix spelling mistakes 2022-01-07 15:44:42 +01:00
Storage Kernel: Make enumerate_disk_partitions function not const 2022-01-09 20:18:37 -08:00
Syscalls Kernel: Delay Process data unprotection in sys$pledge() 2022-01-02 18:08:02 +01:00
Tasks Kernel: Mark kernel smart-pointer classes as [[nodiscard]] 2021-12-05 15:31:03 +01:00
Time Kernel: Remove the kmalloc_eternal heap :^) 2021-12-28 21:02:38 +01:00
TTY Kernel: Lock weak pointer revocation during listed-ref-counted unref 2022-01-08 16:31:14 +01:00
AddressSanitizer.cpp
AddressSanitizer.h
Assertions.h
AtomicEdgeAction.h
BootInfo.h
CMakeLists.txt Kernel: Fix indentation in CMakeLists.txt 2022-01-10 19:10:02 +01:00
CMOS.cpp
CMOS.h
CommandLine.cpp Kernel: Add option to force using only the bootloader framebuffer 2022-01-06 22:34:11 +01:00
CommandLine.h Kernel: Add option to force using only the bootloader framebuffer 2022-01-06 22:34:11 +01:00
Coredump.cpp Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
Coredump.h
Debug.h.in Kernel/NVMe: Add initial NVMe driver support 2022-01-01 14:55:58 +01:00
DoubleBuffer.cpp
DoubleBuffer.h
embedmap.sh
Forward.h
FutexQueue.cpp
FutexQueue.h
GlobalProcessExposed.cpp Kernel: Simplify some if statements 2021-12-30 14:32:17 +01:00
init.cpp Kernel: Remove old SlabAllocator :^) 2021-12-26 21:22:59 +01:00
KBuffer.h Kernel: Propagate overflow errors from Memory::page_round_up 2021-12-28 23:08:50 +01:00
KBufferBuilder.cpp Kernel+AK: Eliminate a couple of temporary String allocations 2021-12-30 14:16:03 +01:00
KBufferBuilder.h
KLexicalPath.cpp
KLexicalPath.h
kprintf.cpp Kernel: Simplify some if statements 2021-12-30 14:32:17 +01:00
kstdio.h
KString.cpp
KString.h
KSyms.cpp Kernel: Remove the kmalloc_eternal heap :^) 2021-12-28 21:02:38 +01:00
KSyms.h
linker.ld
MiniStdLib.cpp
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 Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
Panic.h
PerformanceEventBuffer.cpp Kernel: Use unchecked_append in PerformanceEventBuffer raw_backtrace() 2022-01-05 14:04:18 +01:00
PerformanceEventBuffer.h
PerformanceManager.h
PhysicalAddress.h
Process.cpp Everywhere: Fix many spelling errors 2022-01-07 10:56:59 +01:00
Process.h Everywhere: Fix spelling mistakes 2022-01-07 15:44:42 +01:00
ProcessExposed.cpp Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
ProcessExposed.h Kernel+SystemServer: Add /dev/tty 2021-12-12 22:32:35 +01:00
ProcessGroup.cpp
ProcessGroup.h
ProcessProcFSTraits.cpp Kernel+SystemServer: Add /dev/tty 2021-12-12 22:32:35 +01:00
ProcessSpecificExposed.cpp Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
Random.cpp Kernel: Make KernelRng not inherit from Lockable 2021-12-26 21:22:59 +01:00
Random.h Kernel: Remove the kmalloc_eternal heap :^) 2021-12-28 21:02:38 +01:00
RTC.cpp Everywhere: Fix many spelling errors 2022-01-07 10:56:59 +01:00
RTC.h
SanCov.cpp Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
Scheduler.cpp Kernel: Simplify some if statements 2021-12-30 14:32:17 +01:00
Scheduler.h
Sections.h Kernel: Move userspace virtual address range base to 0x10000 2021-12-22 00:02:36 -08:00
StdLib.cpp Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
StdLib.h
Syscall.cpp Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
Thread.cpp Kernel: Remove the KString::try_create(String::formatted(...)) pattern 2021-12-28 01:55:22 -08:00
Thread.h Kernel: Allow preventing kmalloc and kfree 2022-01-11 00:08:58 +01:00
ThreadBlockers.cpp Kernel: Add some implied auto qualifiers 2021-12-30 14:32:17 +01:00
ThreadTracer.cpp
ThreadTracer.h Kernel: Add missing includes in ThreadTracer and WorkQueue 2021-12-30 14:32:17 +01:00
TimerQueue.cpp
TimerQueue.h
UBSanitizer.cpp Kernel: Print KUBSAN backtrace to screen if KUBSAN is deadly 2021-12-29 17:58:44 +01:00
UnixTypes.h
UserOrKernelBuffer.cpp
UserOrKernelBuffer.h Kernel+LibC: Move errno definitions to Kernel/API/POSIX 2021-12-16 22:21:35 +03:30
VirtualAddress.h
WaitQueue.cpp
WaitQueue.h
WorkQueue.cpp Kernel: Mark kernel smart-pointer classes as [[nodiscard]] 2021-12-05 15:31:03 +01:00
WorkQueue.h Kernel: Add missing includes in ThreadTracer and WorkQueue 2021-12-30 14:32:17 +01:00