diff --git a/src/system/kernel/fs/fd.cpp b/src/system/kernel/fs/fd.cpp index 4bc7bf9a53..06b3b0cf04 100644 --- a/src/system/kernel/fs/fd.cpp +++ b/src/system/kernel/fs/fd.cpp @@ -12,6 +12,7 @@ #include #include +#include #include @@ -515,6 +516,17 @@ fd_ioctl(bool kernelFD, int fd, uint32 op, void* buffer, size_t length) if (descriptor == NULL) return B_FILE_ERROR; + if (op == FIONBIO || op == FIONREAD) { + switch (descriptor->type) { + case FDTYPE_FILE: + case FDTYPE_DIR: + case FDTYPE_ATTR_DIR: + case FDTYPE_ATTR: + put_fd(descriptor); + return ENOTTY; + } + } + if (descriptor->ops->fd_ioctl) status = descriptor->ops->fd_ioctl(descriptor, op, buffer, length); else