mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-22 04:25:13 +00:00
Fix deadlock in synthfs read implementation.
Not cool disabling interrupts and then calling out to arbitrary code.
This commit is contained in:
parent
3b2dcd5929
commit
abdf24cb73
Notes:
sideshowbarker
2024-07-19 18:31:37 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/abdf24cb731
1 changed files with 9 additions and 6 deletions
|
@ -194,8 +194,6 @@ bool SyntheticFileSystem::writeInode(InodeIdentifier, const ByteBuffer&)
|
|||
|
||||
Unix::ssize_t SyntheticFileSystem::readInodeBytes(InodeIdentifier inode, Unix::off_t offset, Unix::size_t count, byte* buffer, FileDescriptor* handle) const
|
||||
{
|
||||
InterruptDisabler disabler;
|
||||
|
||||
ASSERT(inode.fileSystemID() == id());
|
||||
#ifdef SYNTHFS_DEBUG
|
||||
kprintf("synthfs: readInode %u\n", inode.index());
|
||||
|
@ -203,10 +201,15 @@ Unix::ssize_t SyntheticFileSystem::readInodeBytes(InodeIdentifier inode, Unix::o
|
|||
ASSERT(offset >= 0);
|
||||
ASSERT(buffer);
|
||||
|
||||
auto it = m_inodes.find(inode.index());
|
||||
if (it == m_inodes.end())
|
||||
return false;
|
||||
const File& file = *(*it).value;
|
||||
const File* found_file;
|
||||
{
|
||||
InterruptDisabler disabler;
|
||||
auto it = m_inodes.find(inode.index());
|
||||
if (it == m_inodes.end())
|
||||
return false;
|
||||
found_file = (*it).value.ptr();
|
||||
}
|
||||
const File& file = *found_file;
|
||||
ByteBuffer generatedData;
|
||||
if (file.generator) {
|
||||
if (!handle) {
|
||||
|
|
Loading…
Add table
Reference in a new issue