diff --git a/Kernel/FileSystem/SysFS.cpp b/Kernel/FileSystem/SysFS.cpp index d3ac479ffb..fe790cae68 100644 --- a/Kernel/FileSystem/SysFS.cpp +++ b/Kernel/FileSystem/SysFS.cpp @@ -137,7 +137,7 @@ InodeMetadata SysFSInode::metadata() const metadata.mode = S_IFREG | m_associated_component->permissions(); metadata.uid = 0; metadata.gid = 0; - metadata.size = 0; + metadata.size = m_associated_component->size(); metadata.mtime = mepoch; return metadata; } diff --git a/Kernel/FileSystem/SysFSComponent.h b/Kernel/FileSystem/SysFSComponent.h index 179f704ea4..b7d1032e8c 100644 --- a/Kernel/FileSystem/SysFSComponent.h +++ b/Kernel/FileSystem/SysFSComponent.h @@ -31,6 +31,7 @@ public: virtual RefPtr lookup(StringView) { VERIFY_NOT_REACHED(); }; virtual mode_t permissions() const; virtual ErrorOr truncate(u64) { return EPERM; } + virtual size_t size() const { return 0; } virtual ErrorOr set_mtime(time_t) { return ENOTIMPL; } virtual ErrorOr write_bytes(off_t, size_t, UserOrKernelBuffer const&, OpenFileDescription*) { return EROFS; } virtual ErrorOr refresh_data(OpenFileDescription&) const { return {}; } diff --git a/Kernel/Firmware/BIOS.h b/Kernel/Firmware/BIOS.h index a881b80344..0be5ad40aa 100644 --- a/Kernel/Firmware/BIOS.h +++ b/Kernel/Firmware/BIOS.h @@ -77,6 +77,9 @@ public: private: DMIEntryPointExposedBlob(PhysicalAddress dmi_entry_point, size_t blob_size); virtual ErrorOr> try_to_generate_buffer() const override; + + virtual size_t size() const override { return m_dmi_entry_point_length; } + PhysicalAddress m_dmi_entry_point; size_t const m_dmi_entry_point_length { 0 }; }; @@ -90,6 +93,8 @@ private: SMBIOSExposedTable(PhysicalAddress dmi_entry_point, size_t blob_size); virtual ErrorOr> try_to_generate_buffer() const override; + virtual size_t size() const override { return m_smbios_structure_table_length; } + PhysicalAddress m_smbios_structure_table; size_t const m_smbios_structure_table_length { 0 }; };