summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2024-07-06 18:19:02 +0200
committerAnton Kling <anton@kling.gg>2024-07-06 18:19:02 +0200
commit7e7f15d494c6fcdbba8e7ba24ce9ca04181a3f7b (patch)
tree12ba306d180f3e5f9aac87c2b55cea9cf2e2a1d8
parent6bf371cc35c11890ab18c32aabd11bf8a816e574 (diff)
Bug fix: Fix use after free when closing a pipe
The other inode might already have been freed when close() is called.
-rw-r--r--kernel/fs/tmpfs.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/fs/tmpfs.c b/kernel/fs/tmpfs.c
index 2ce8ece..f979d92 100644
--- a/kernel/fs/tmpfs.c
+++ b/kernel/fs/tmpfs.c
@@ -7,6 +7,9 @@
#include <typedefs.h>
void tmp_close(vfs_fd_t *fd) {
+ if (!fd->inode->is_open) {
+ return;
+ }
fd->inode->is_open = 0;
((tmp_inode *)fd->inode->internal_object)->read_inode->is_open = 0;
}