summaryrefslogtreecommitdiff
path: root/fs/fuse
diff options
context:
space:
mode:
authorAndré Fabian Silva Delgado <emulatorman@parabola.nu>2016-11-30 18:50:18 -0300
committerAndré Fabian Silva Delgado <emulatorman@parabola.nu>2016-11-30 18:50:18 -0300
commit62e27076b7a48d1c8fc4eed59ff75f6382915c46 (patch)
treebf42384a97f0367a9fac81f3aa29da7815396958 /fs/fuse
parentd26f4ddb48463e2ff798859505af1cc520e75685 (diff)
Linux-libre 4.8.11-gnupck-4.8.11-gnu
Diffstat (limited to 'fs/fuse')
-rw-r--r--fs/fuse/file.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index 3988b43c2..a621dd98a 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -1985,6 +1985,10 @@ static int fuse_write_end(struct file *file, struct address_space *mapping,
{
struct inode *inode = page->mapping->host;
+ /* Haven't copied anything? Skip zeroing, size extending, dirtying. */
+ if (!copied)
+ goto unlock;
+
if (!PageUptodate(page)) {
/* Zero any unwritten bytes at the end of the page */
size_t endoff = (pos + copied) & ~PAGE_MASK;
@@ -1995,6 +1999,8 @@ static int fuse_write_end(struct file *file, struct address_space *mapping,
fuse_write_update_size(inode, pos + copied);
set_page_dirty(page);
+
+unlock:
unlock_page(page);
put_page(page);