From 1e173c178dc0bad49651495c369600c8b25f3fb7 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Mon, 10 Jul 2023 15:34:10 +0300 Subject: [PATCH] Kernel: Ext2 fill now return ENOTSUP on write We used to crash the kernel --- kernel/include/kernel/FS/Ext2.h | 1 + kernel/kernel/FS/Ext2.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/kernel/include/kernel/FS/Ext2.h b/kernel/include/kernel/FS/Ext2.h index 4326ee145..e511ea210 100644 --- a/kernel/include/kernel/FS/Ext2.h +++ b/kernel/include/kernel/FS/Ext2.h @@ -145,6 +145,7 @@ namespace Kernel virtual BAN::ErrorOr> directory_find_inode(BAN::StringView) override; virtual BAN::ErrorOr read(size_t, void*, size_t) override; + virtual BAN::ErrorOr write(size_t, const void*, size_t) override; virtual BAN::ErrorOr create_file(BAN::StringView, mode_t, uid_t, gid_t) override; diff --git a/kernel/kernel/FS/Ext2.cpp b/kernel/kernel/FS/Ext2.cpp index 3a9395681..39b0428b3 100644 --- a/kernel/kernel/FS/Ext2.cpp +++ b/kernel/kernel/FS/Ext2.cpp @@ -291,6 +291,16 @@ namespace Kernel return n_read; } + BAN::ErrorOr Ext2Inode::write(size_t offset, const void* buffer, size_t count) + { + (void)offset; + (void)buffer; + (void)count; + if (mode().ifdir()) + return BAN::Error::from_errno(EISDIR); + return BAN::Error::from_errno(ENOTSUP); + } + BAN::ErrorOr Ext2Inode::directory_read_next_entries(off_t offset, DirectoryEntryList* list, size_t list_size) { if (!mode().ifdir())