瀏覽代碼

fuse: generic_write_checks() for direct_io

This fixes O_APPEND in direct IO mode.  Also checks writes against file size
limits, notably rlimits.

Reported by Greg Bruno.

Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Miklos Szeredi 18 年之前
父節點
當前提交
889f784831
共有 1 個文件被更改,包括 3 次插入1 次删除
  1. 3 1
      fs/fuse/file.c

+ 3 - 1
fs/fuse/file.c

@@ -610,7 +610,9 @@ static ssize_t fuse_direct_write(struct file *file, const char __user *buf,
 	ssize_t res;
 	ssize_t res;
 	/* Don't allow parallel writes to the same file */
 	/* Don't allow parallel writes to the same file */
 	mutex_lock(&inode->i_mutex);
 	mutex_lock(&inode->i_mutex);
-	res = fuse_direct_io(file, buf, count, ppos, 1);
+	res = generic_write_checks(file, ppos, &count, 0);
+	if (!res)
+		res = fuse_direct_io(file, buf, count, ppos, 1);
 	mutex_unlock(&inode->i_mutex);
 	mutex_unlock(&inode->i_mutex);
 	return res;
 	return res;
 }
 }