From ae62f9bed55dec548a972193bacc35c086ecfe64 Mon Sep 17 00:00:00 2001 From: Matheus Date: Wed, 26 Jun 2024 21:02:47 -0300 Subject: [PATCH] tmpfs: fixes --- kernel-src/fs/tmpfs.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/kernel-src/fs/tmpfs.c b/kernel-src/fs/tmpfs.c index 20428b58..96a91301 100644 --- a/kernel-src/fs/tmpfs.c +++ b/kernel-src/fs/tmpfs.c @@ -196,10 +196,22 @@ static int tmpfs_root(vfs_t *vfs, vnode_t **vnode) { } static int tmpfs_read(vnode_t *node, void *buffer, size_t size, uintmax_t offset, int flags, size_t *readc, cred_t *cred) { + if (node->type == V_TYPE_DIR) + return EISDIR; + + if (node->type != V_TYPE_REGULAR) + return EINVAL; + __assert(!"tmpfs_read is handled by the page cache"); } static int tmpfs_write(vnode_t *node, void *buffer, size_t size, uintmax_t offset, int flags, size_t *writec, cred_t *cred) { + if (node->type == V_TYPE_DIR) + return EISDIR; + + if (node->type != V_TYPE_REGULAR) + return EINVAL; + __assert(!"tmpfs_read is handled by the page cache"); } @@ -309,7 +321,7 @@ static int tmpfs_rename(vnode_t *source, char *oldname, vnode_t *target, char *n else if (error == 0) // found oldnode = v; - if (node->vfsmounted || oldnode->vfsmounted) { + if (node->vfsmounted || (oldnode && oldnode->vfsmounted)) { error = EBUSY; goto cleanup; }