From 41c744b3c851f1e7e4c9105959cdda35f6554050 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 20 Mar 2019 02:55:12 +0100 Subject: [PATCH] Kernel: Don't panic if a call redirected to Device::open() has an error. Just pass the error to the user. I hit this when opening so many Terminal windows that PTYMultiplexer::open() ran out of master/slave pairs. --- Kernel/VirtualFileSystem.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Kernel/VirtualFileSystem.cpp b/Kernel/VirtualFileSystem.cpp index 1fb13612da..1f65d6742a 100644 --- a/Kernel/VirtualFileSystem.cpp +++ b/Kernel/VirtualFileSystem.cpp @@ -191,10 +191,11 @@ KResultOr> VFS::open(const String& path, int options, m kprintf("VFS::open: no such device %u,%u\n", metadata.major_device, metadata.minor_device); return KResult(-ENODEV); } - auto descriptor = (*it).value->open(options); - ASSERT(!descriptor.is_error()); - descriptor.value()->set_original_inode(Badge(), *inode_or_error.value()); - return descriptor; + auto descriptor_or_error = (*it).value->open(options); + if (descriptor_or_error.is_error()) + return descriptor_or_error.error(); + descriptor_or_error.value()->set_original_inode(Badge(), *inode_or_error.value()); + return descriptor_or_error; } return FileDescriptor::create(*inode_or_error.value()); }