From ab233bfd331748b02317bbbec9610cfdc2be944d Mon Sep 17 00:00:00 2001 From: "S.J.R. van Schaik" Date: Mon, 12 Jun 2017 17:30:12 +0200 Subject: [PATCH] mufs: properly sync file size and check file size in mufs_write() and mufs_read() respectively --- source/fs/mufs/file.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/source/fs/mufs/file.c b/source/fs/mufs/file.c index 26eee33..c70aa40 100644 --- a/source/fs/mufs/file.c +++ b/source/fs/mufs/file.c @@ -96,6 +96,9 @@ size_t mufs_read(struct mufs_file *file, void *data, size_t len) if (!(file->mode & MUFS_READ)) return 0; + if (file->va >= file->tree->file_size) + return 0; + if (!(ret = mufs_tree_read(file->tree, data, file->va, len))) return 0; @@ -122,8 +125,12 @@ size_t mufs_write(struct mufs_file *file, const void *data, size_t len) file->va += ret; - if (file->tree->file_size <= file->va && mufs_sync_tree(file->tree) < 0) - return 0; + if (file->tree->file_size <= file->va) { + file->tree->file_size = file->va; + + if (mufs_sync_tree(file->tree) < 0) + return 0; + } return ret; }