1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 06:48:12 +00:00

Kernel+FileManager: Disallow watch_file() in unsupported file systems

Currently only Ext2FS and TmpFS supports InodeWatchers. We now fail
with ENOTSUPP if watch_file() is called on e.g ProcFS.

This fixes an issue with FileManager chewing up all the CPU when /proc
was opened. Watchers don't keep the watched Inode open, and when they
close, the watcher FD will EOF.

Since nothing else kept /proc open in FileManager, the watchers created
for it would EOF immediately, causing a refresh over and over.

Fixes #879.
This commit is contained in:
Andreas Kling 2019-12-15 19:33:39 +01:00
parent 7fea25943d
commit 5292f6e78f
6 changed files with 21 additions and 9 deletions

View file

@ -3230,6 +3230,9 @@ int Process::sys$watch_file(const char* path, int path_length)
auto& custody = custody_or_error.value();
auto& inode = custody->inode();
if (!inode.fs().supports_watchers())
return -ENOTSUP;
int fd = alloc_fd();
if (fd < 0)
return fd;