1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2026-01-13 13:41:01 +00:00
serenity/Kernel/VM
Tom 82c4812730 Kernel: Remove flawed SharedInodeVMObject assertion
This assertion cannot be safely/reliably made in the
~SharedInodeVMObject destructor. The problem is that
Inode::is_shared_vmobject holds a weak reference to the instance
that is being destroyed (ref count 0). Checking the pointer using
WeakPtr::unsafe_ptr will produce nullptr depending on timing in
this case, and WeakPtr::safe_ref will reliably produce a nullptr
as soon as the reference count drops to 0. The only case where
this assertion could succeed is when WeakPtr::unsafe_ptr returned
the pointer because it won the race against revoking it. And
because WeakPtr::safe_ref will always return a nullptr, we cannot
reliably assert this from the ~SharedInodeVMObject destructor.

Fixes #4621
2020-12-31 10:52:45 +01:00
..
AnonymousVMObject.cpp Kernel: Move all code into the Kernel namespace 2020-02-16 01:27:42 +01:00
AnonymousVMObject.h Kernel: Switch to using AK::is and AK::downcast 2020-07-26 17:51:00 +02:00
ContiguousVMObject.cpp Kernel: Allow contiguous allocations in physical memory 2020-03-08 14:13:30 +01:00
ContiguousVMObject.h Meta+Kernel: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
InodeVMObject.cpp Everywhere: Switch from (void) to [[maybe_unused]] (#4473) 2020-12-21 00:09:48 +01:00
InodeVMObject.h Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
MappedROM.h Kernel: Fix various forward declarations 2020-09-12 13:46:15 +02:00
MemoryManager.cpp AK: Remove custom %w format string specifier 2020-12-25 17:05:05 +01:00
MemoryManager.h Kernel: Move KBufferBuilder to the fallible KBuffer API 2020-12-18 19:22:26 +01:00
PageDirectory.cpp Kernel: Prevent sign bit extension when creating a PDPTE 2020-12-30 20:33:15 +01:00
PageDirectory.h Kernel: Protect the PageDirectory from concurrent access 2020-11-11 12:27:25 +01:00
PhysicalPage.cpp Kernel: Make PhysicalPage not movable and use atomic ref counting 2020-08-25 09:48:48 +02:00
PhysicalPage.h Meta+Kernel: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
PhysicalRegion.cpp Kernel/VM: Make local_offset in PhysicalRegion::find_one_free_page unsigned 2020-12-29 02:20:26 +01:00
PhysicalRegion.h Meta+Kernel: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
PrivateInodeVMObject.cpp Kernel: Split InodeVMObject into two subclasses 2020-02-28 20:20:35 +01:00
PrivateInodeVMObject.h Kernel: Add some InodeVMObject type assertions in Region::clone() 2020-03-01 11:23:10 +01:00
ProcessPagingScope.cpp Kernel: Turn Thread::current and Process::current into functions 2020-07-01 12:07:01 +02:00
ProcessPagingScope.h Kernel: Move ProcessPagingScope to its own files 2020-03-01 15:38:09 +01:00
PurgeableVMObject.cpp Meta+Kernel: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
PurgeableVMObject.h Kernel: Switch to using AK::is and AK::downcast 2020-07-26 17:51:00 +02:00
RangeAllocator.cpp AK: Make binary_search signature more generic. 2020-12-30 02:13:30 +01:00
RangeAllocator.h Kernel: Add locks around RangeAllocator 2020-11-11 12:27:25 +01:00
Region.cpp Kernel: Fix some issues related to fixes and block conditions 2020-12-12 21:28:12 +01:00
Region.h Kernel+LibC: Add a very limited sys$mremap() implementation 2020-12-29 02:20:43 +01:00
SharedInodeVMObject.cpp Kernel: Remove flawed SharedInodeVMObject assertion 2020-12-31 10:52:45 +01:00
SharedInodeVMObject.h Kernel: Remove flawed SharedInodeVMObject assertion 2020-12-31 10:52:45 +01:00
TypedMapping.h Kernel: Add non-const version of TypedMapping::operator->() 2020-05-23 15:57:19 +02:00
VMObject.cpp Refactor: Replace usages of FixedArray with Vector. 2020-09-08 14:01:21 +02:00
VMObject.h Refactor: Replace usages of FixedArray with Vector. 2020-09-08 14:01:21 +02:00