ladybird/Kernel
Daniel Bertalan d7b6cc6421 Everywhere: Prevent risky implicit casts of (Nonnull)RefPtr
Our existing implementation did not check the element type of the other
pointer in the constructors and move assignment operators. This meant
that some operations that would require explicit casting on raw pointers
were done implicitly, such as:
- downcasting a base class to a derived class (e.g. `Kernel::Inode` =>
  `Kernel::ProcFSDirectoryInode` in Kernel/ProcFS.cpp),
- casting to an unrelated type (e.g. `Promise<bool>` => `Promise<Empty>`
  in LibIMAP/Client.cpp)

This, of course, allows gross violations of the type system, and makes
the need to type-check less obvious before downcasting. Luckily, while
adding the `static_ptr_cast`s, only two truly incorrect usages were
found; in the other instances, our casts just needed to be made
explicit.
2021-09-03 23:20:23 +02:00
..
ACPI Kernel: Move Mutex into Locking/ 2021-08-07 11:48:00 +02:00
API Kernel+Userland: Remove global futexes 2021-08-17 01:21:47 +02:00
Arch Kernel: Fix Clang not initializing s_bsp_processor correctly 2021-08-30 13:20:34 +02:00
Bus Kernel/VirtIO: Stop leaking VirtIO::ConsolePort objects 2021-09-03 02:36:09 +02:00
Devices Kernel: Convert UserOrKernelBuffer callbacks to use AK::Bytes 2021-09-01 18:06:14 +02:00
FileSystem Everywhere: Prevent risky implicit casts of (Nonnull)RefPtr 2021-09-03 23:20:23 +02:00
Graphics Everywhere: Prevent risky implicit casts of (Nonnull)RefPtr 2021-09-03 23:20:23 +02:00
Heap Kernel: Rename ScopedSpinlock => SpinlockLocker 2021-08-22 03:34:10 +02:00
Interrupts Kernel: Rename Spinlock::is_owned_by_current_thread() 2021-08-29 22:19:42 +02:00
Library Kernel: Rename SpinLock => Spinlock 2021-08-22 03:34:10 +02:00
Locking Kernel: Rename Spinlock::is_owned_by_current_thread() 2021-08-29 22:19:42 +02:00
Memory Kernel: Don't use {:p} when printing out invalid userspace stack pointer 2021-09-03 11:46:40 +02:00
Modules Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Net Kernel: Convert Routing to east-const style 2021-09-03 23:18:50 +02:00
Prekernel Prekernel: Make build on aarch64 2021-08-28 21:51:30 +01:00
Storage Kernel: Convert UserOrKernelBuffer callbacks to use AK::Bytes 2021-09-01 18:06:14 +02:00
Syscalls Everywhere: Prevent risky implicit casts of (Nonnull)RefPtr 2021-09-03 23:20:23 +02:00
Tasks Kernel: Make VirtualFileSystem::sync() static 2021-07-11 00:26:17 +02:00
Time Kernel: Convert Processor::in_irq() to static current_in_irq() 2021-08-23 00:02:09 +02:00
TTY Kernel: Convert UserOrKernelBuffer callbacks to use AK::Bytes 2021-09-01 18:06:14 +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 AK+Kernel: Print TODO when a TODO() is executed 2021-08-04 11:01:16 +02:00
AtomicEdgeAction.h Kernel: Add AtomicEdgeAction class 2021-07-07 21:57:01 +02:00
BootInfo.h Kernel: Support loading the kernel at almost arbitrary virtual addresses 2021-07-27 13:15:16 +02:00
CMakeLists.txt Kernel/VirtIO: Remove redundant VirtIO word from filenames 2021-08-31 16:51:13 +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 AK+Kernel: StringView hash map Traits should not set peek type to String 2021-08-18 10:21:19 +02:00
CommandLine.h AK+Kernel: StringView hash map Traits should not set peek type to String 2021-08-18 10:21:19 +02:00
ConsoleDevice.cpp Kernel: Convert UserOrKernelBuffer callbacks to use AK::Bytes 2021-09-01 18:06:14 +02:00
ConsoleDevice.h Kernel: Make various T::class_name() and similar return StringView 2021-07-11 01:46:59 +02:00
Coredump.cpp Everywhere: Core dump => Coredump 2021-08-23 00:02:09 +02:00
Coredump.h Everywhere: Core dump => Coredump 2021-08-23 00:02:09 +02:00
Debug.h.in Kernel: Verify interrupts are disabled when interacting with Mutexes 2021-08-28 20:53:38 +02:00
DoubleBuffer.cpp Kernel: Add convenience values to the Memory::Region::Access enum 2021-08-06 22:25:00 +02:00
DoubleBuffer.h Kernel+LibC: Implement FIONREAD ioctl 2021-08-22 10:29:06 +02:00
embedmap.sh Kernel: Make new kernel build process work on macOS 2021-07-15 11:04:30 +02:00
Forward.h Kernel: Strongly typed user & group ID's 2021-08-29 01:09:19 +02:00
FutexQueue.cpp Kernel: Don't register thread as custom data for FutexBlocker 2021-08-24 01:57:11 +02:00
FutexQueue.h Kernel: Don't register thread as custom data for FutexBlocker 2021-08-24 01:57:11 +02:00
GlobalProcessExposed.cpp Kernel: Use ProcessID a bit more in Socket 2021-08-29 01:09:19 +02:00
init.cpp Kernel/VirtIO: Remove redundant VirtIO word from filenames 2021-08-31 16:51:13 +02:00
IO.h Kernel: Specify I/O size for BMIDEChannel 2021-06-28 15:55:00 +02:00
KBuffer.h Kernel: Add convenience values to the Memory::Region::Access enum 2021-08-06 22:25:00 +02:00
KBufferBuilder.cpp Kernel: Add convenience values to the Memory::Region::Access enum 2021-08-06 22:25:00 +02:00
KBufferBuilder.h Everywhere: Pass AK::Format TypeErasedFormatParams by reference 2021-08-30 15:50:00 +04:30
KLexicalPath.cpp Kernel: Make KLexicalPath::basename() more compliant 2021-07-11 14:10:58 +02:00
KLexicalPath.h Kernel: Add KLexicalPath::try_join and use it 2021-07-07 15:32:17 +02:00
kprintf.cpp Kernel: Rename ScopedSpinlock => SpinlockLocker 2021-08-22 03:34:10 +02:00
KResult.h Kernel: Stop allowing implicit conversion from KResult to int 2021-08-14 15:19:00 +02:00
kstdio.h Kernel: Introduce a StringView overload of dbgputstr(..) 2021-08-13 11:08:11 +02:00
KString.cpp Kernel: Allow passing null pointer to delete 2021-07-14 13:12:25 +02:00
KString.h Kernel: Annotate KString methods as [[nodiscard]] 2021-08-13 11:08:11 +02:00
KSyms.cpp Kernel: Print panic backtrace to both the screen and serial 2021-08-04 20:14:54 +02:00
KSyms.h Kernel: Print panic backtrace to both the screen and serial 2021-08-04 20:14:54 +02:00
linker.ld Kernel: Support loading the kernel at almost arbitrary virtual addresses 2021-07-27 13:15:16 +02:00
MiniStdLib.cpp Kernel: Introduce basic pre-kernel environment 2021-07-18 17:31:13 +02:00
mkmap.sh Kernel: Use our toolchain's c++filt tool for the kernel map 2021-07-29 10:38:31 +02:00
Module.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Multiboot.h Prekernel: Export some multiboot parameters in our own BootInfo struct 2021-07-27 13:15:16 +02:00
Panic.cpp Kernel: Print panic backtrace to both the screen and serial 2021-08-04 20:14:54 +02:00
Panic.h Kernel/Graphics + SystemServer: Support text mode properly 2021-05-16 19:58:33 +02:00
PerformanceEventBuffer.cpp Kernel: Rename ScopedSpinlock => SpinlockLocker 2021-08-22 03:34:10 +02:00
PerformanceEventBuffer.h Kernel: Make sys$perf_register_string() generate the string ID's 2021-08-12 00:03:39 +02:00
PerformanceManager.h Kernel: Add syscall performance event type 2021-08-10 21:55:48 +02:00
PhysicalAddress.h Kernel: Move PhysicalPage classes out of the heap into an array 2021-07-08 11:43:34 +02:00
Process.cpp Kernel: Strongly typed user & group ID's 2021-08-29 01:09:19 +02:00
Process.h Kernel: {Mutex,Spinlock}::own_lock() => is_locked_by_current_thread() 2021-08-29 12:53:11 +02:00
ProcessExposed.cpp Kernel: Rename ScopedSpinlock => SpinlockLocker 2021-08-22 03:34:10 +02:00
ProcessExposed.h Kernel: Make all ProcFS and SysFS files zero-sized 2021-08-29 01:09:19 +02:00
ProcessGroup.cpp Kernel: Rename SpinLock => Spinlock 2021-08-22 03:34:10 +02:00
ProcessGroup.h Kernel: Rename SpinLock => Spinlock 2021-08-22 03:34:10 +02:00
ProcessProcFSTraits.cpp Kernel: Strongly typed user & group ID's 2021-08-29 01:09:19 +02:00
ProcessSpecificExposed.cpp Kernel: Rename ScopedSpinlock => SpinlockLocker 2021-08-22 03:34:10 +02:00
Random.cpp Kernel: Convert random bytes interface to use AK::Bytes 2021-09-01 18:06:14 +02:00
Random.h Kernel: Convert random bytes interface to use AK::Bytes 2021-09-01 18:06:14 +02:00
RTC.cpp Kernel: Ensure we read valid values from the RTC CMOS registers 2021-08-04 19:53:04 +02: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: Convert Processor::in_irq() to static current_in_irq() 2021-08-23 00:02:09 +02:00
Scheduler.cpp Kernel: Rename Spinlock::is_owned_by_current_thread() 2021-08-29 22:19:42 +02:00
Scheduler.h Kernel: Rename SpinLock => Spinlock 2021-08-22 03:34:10 +02:00
Sections.h Kernel: Support loading the kernel at almost arbitrary virtual addresses 2021-07-27 13:15:16 +02:00
StdLib.cpp Kernel: Remove copy_string_from_user() as it's no longer used 2021-08-15 12:44:35 +02:00
StdLib.h Kernel: Remove copy_string_from_user() as it's no longer used 2021-08-15 12:44:35 +02:00
Syscall.cpp Kernel: Rename Spinlock::is_owned_by_current_thread() 2021-08-29 22:19:42 +02:00
Thread.cpp AK: Rename create<T> => make_ref_counted<T> 2021-09-03 02:36:09 +02:00
Thread.h Kernel: Rename Spinlock::is_owned_by_current_thread() 2021-08-29 22:19:42 +02:00
ThreadBlockers.cpp Kernel: Rename Spinlock::is_owned_by_current_thread() 2021-08-29 22:19:42 +02:00
ThreadTracer.cpp Kernel: Remove unused header includes in root kernel tree 2021-07-11 21:37:38 +02:00
ThreadTracer.h Kernel: Move {Process,Thread,Session,ProcessGroup}ID to Kernel/Forward.h 2021-08-14 19:58:11 +02:00
TimerQueue.cpp Kernel: Rename ScopedSpinlock => SpinlockLocker 2021-08-22 03:34:10 +02:00
TimerQueue.h Kernel: Do not cancel stale timers when servicing sys$alarm 2021-08-03 18:44:01 +02:00
UBSanitizer.cpp Kernel: Pull apart CPU.h 2021-06-24 00:38:23 +02:00
UnixTypes.h Kernel: Move {Process,Thread,Session,ProcessGroup}ID to Kernel/Forward.h 2021-08-14 19:58:11 +02:00
UserOrKernelBuffer.cpp Kernel: Move Kernel/Memory/ code into Kernel::Memory namespace 2021-08-06 14:05:58 +02:00
UserOrKernelBuffer.h Kernel: Convert UserOrKernelBuffer callbacks to use AK::Bytes 2021-09-01 18:06:14 +02:00
VirtualAddress.h Kernel: Make VirtualAddress methods constexpr 2021-08-25 12:12:59 +02:00
WaitQueue.cpp Kernel: Don't register thread as custom data for WaitQueueBlocker 2021-08-24 01:57:11 +02:00
WaitQueue.h Kernel: Don't register thread as custom data for WaitQueueBlocker 2021-08-24 01:57:11 +02:00
WorkQueue.cpp Kernel: Rename ScopedSpinlock => SpinlockLocker 2021-08-22 03:34:10 +02:00
WorkQueue.h Kernel: Rename SpinLock => Spinlock 2021-08-22 03:34:10 +02:00