diff --git a/Kernel/FileSystem/Inode.cpp b/Kernel/FileSystem/Inode.cpp index e7885e9e7b8..127ad174f6a 100644 --- a/Kernel/FileSystem/Inode.cpp +++ b/Kernel/FileSystem/Inode.cpp @@ -39,7 +39,7 @@ namespace Kernel { static SpinLock s_all_inodes_lock; -static InlineLinkedList& all_inodes() +InlineLinkedList& Inode::all_with_lock() { ASSERT(s_all_inodes_lock.is_locked()); @@ -54,7 +54,7 @@ void Inode::sync() NonnullRefPtrVector inodes; { ScopedSpinLock all_inodes_lock(s_all_inodes_lock); - for (auto& inode : all_inodes()) { + for (auto& inode : all_with_lock()) { if (inode.is_metadata_dirty()) inodes.append(inode); } @@ -110,13 +110,13 @@ Inode::Inode(FS& fs, unsigned index) , m_index(index) { ScopedSpinLock all_inodes_lock(s_all_inodes_lock); - all_inodes().append(this); + all_with_lock().append(this); } Inode::~Inode() { ScopedSpinLock all_inodes_lock(s_all_inodes_lock); - all_inodes().remove(this); + all_with_lock().remove(this); } void Inode::will_be_destroyed() diff --git a/Kernel/FileSystem/Inode.h b/Kernel/FileSystem/Inode.h index 6af051e83d1..24e7f12012c 100644 --- a/Kernel/FileSystem/Inode.h +++ b/Kernel/FileSystem/Inode.h @@ -105,6 +105,7 @@ public: SharedInodeVMObject* shared_vmobject() { return m_shared_vmobject.ptr(); } const SharedInodeVMObject* shared_vmobject() const { return m_shared_vmobject.ptr(); } + static InlineLinkedList& all_with_lock(); static void sync(); bool has_watchers() const { return !m_watchers.is_empty(); } diff --git a/Kernel/FileSystem/ProcFS.cpp b/Kernel/FileSystem/ProcFS.cpp index d2220d5c36c..a88b4d520bc 100644 --- a/Kernel/FileSystem/ProcFS.cpp +++ b/Kernel/FileSystem/ProcFS.cpp @@ -900,10 +900,9 @@ static Optional procfs$all(InodeIdentifier) static Optional procfs$inodes(InodeIdentifier) { - extern InlineLinkedList& all_inodes(); KBufferBuilder builder; InterruptDisabler disabler; - for (auto& inode : all_inodes()) { + for (auto& inode : Inode::all_with_lock()) { builder.appendf("Inode{K%x} %02u:%08u (%u)\n", &inode, inode.fsid(), inode.index(), inode.ref_count()); } return builder.build();