Skip to contentSkip to conversation

Patch "fuse: fix fuse_write_end() if zero bytes were copied" has been added to the 4.4-stable tree

PATCH [email protected] 1 participant 1 message Nov 21, 2016

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

fuse: fix fuse_write_end() if zero bytes were copied

to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
fuse-fix-fuse_write_end-if-zero-bytes-were-copied.patch
and it can be found in the queue-4.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 59c3b76cc61d1d676f965c192cc7969aa5cb2744 Mon Sep 17 00:00:00 2001

From: Miklos Szeredi <[email protected]>
Date: Thu, 18 Aug 2016 09:10:44 +0200
Subject: fuse: fix fuse_write_end() if zero bytes were copied

From: Miklos Szeredi <[email protected]>

commit 59c3b76cc61d1d676f965c192cc7969aa5cb2744 upstream.

If pos is at the beginning of a page and copied is zero then page is not zeroed but is marked uptodate.

Fix by skipping everything except unlock/put of page if zero bytes were copied.

Fixes 6b12c1b37e55 ("fuse: Implement write_begin/write_end callbacks")
---
 fs/fuse/file.c |    6 ++++++
 1 file changed, 6 insertions(+)
fs/fuse/file.c +6 -0
@@ -1997,6 +1997,10 @@ static int fuse_write_end(struct file *f
 {
 	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_CACHE_MASK;
@@ -2007,6 +2011,8 @@ static int fuse_write_end(struct file *f
 
 	fuse_write_update_size(inode, pos + copied);
 	set_page_dirty(page);
+
+unlock:
 	unlock_page(page);
 	page_cache_release(page);
 

Patches currently in stable-queue which might be from [email protected] are

queue-4.4/fuse-fix-fuse_write_end-if-zero-bytes-were-copied.patch