summaryrefslogtreecommitdiffstats
path: root/fs/udf/file.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-08-13 19:45:40 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-08-13 19:45:40 -0400
commitcec997093bbff881c3da49084dfba4f76361e96a (patch)
tree7c84f8c30ceef7209a18d7cd216a3c16536008c5 /fs/udf/file.c
parent8d2d441ac4af223eae466c3c31ff737cc31a1411 (diff)
parent01777836c87081e4f68c4a43c9abe6114805f91e (diff)
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
Pull quota, reiserfs, UDF updates from Jan Kara: "Scalability improvements for quota, a few reiserfs fixes, and couple of misc cleanups (udf, ext2)" * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs: reiserfs: Fix use after free in journal teardown reiserfs: fix corruption introduced by balance_leaf refactor udf: avoid redundant memcpy when writing data in ICB fs/udf: re-use hex_asc_upper_{hi,lo} macros fs/quota: kernel-doc warning fixes udf: use linux/uaccess.h fs/ext2/super.c: Drop memory allocation cast quota: remove dqptr_sem quota: simplify remove_inode_dquot_ref() quota: avoid unnecessary dqget()/dqput() calls quota: protect Q_GETFMT by dqonoff_mutex
Diffstat (limited to 'fs/udf/file.c')
-rw-r--r--fs/udf/file.c22
1 files changed, 2 insertions, 20 deletions
diff --git a/fs/udf/file.c b/fs/udf/file.c
index d80738fdf424..86c6743ec1fe 100644
--- a/fs/udf/file.c
+++ b/fs/udf/file.c
@@ -27,7 +27,7 @@
27 27
28#include "udfdecl.h" 28#include "udfdecl.h"
29#include <linux/fs.h> 29#include <linux/fs.h>
30#include <asm/uaccess.h> 30#include <linux/uaccess.h>
31#include <linux/kernel.h> 31#include <linux/kernel.h>
32#include <linux/string.h> /* memset */ 32#include <linux/string.h> /* memset */
33#include <linux/capability.h> 33#include <linux/capability.h>
@@ -100,24 +100,6 @@ static int udf_adinicb_write_begin(struct file *file,
100 return 0; 100 return 0;
101} 101}
102 102
103static int udf_adinicb_write_end(struct file *file,
104 struct address_space *mapping,
105 loff_t pos, unsigned len, unsigned copied,
106 struct page *page, void *fsdata)
107{
108 struct inode *inode = mapping->host;
109 unsigned offset = pos & (PAGE_CACHE_SIZE - 1);
110 char *kaddr;
111 struct udf_inode_info *iinfo = UDF_I(inode);
112
113 kaddr = kmap_atomic(page);
114 memcpy(iinfo->i_ext.i_data + iinfo->i_lenEAttr + offset,
115 kaddr + offset, copied);
116 kunmap_atomic(kaddr);
117
118 return simple_write_end(file, mapping, pos, len, copied, page, fsdata);
119}
120
121static ssize_t udf_adinicb_direct_IO(int rw, struct kiocb *iocb, 103static ssize_t udf_adinicb_direct_IO(int rw, struct kiocb *iocb,
122 struct iov_iter *iter, 104 struct iov_iter *iter,
123 loff_t offset) 105 loff_t offset)
@@ -130,7 +112,7 @@ const struct address_space_operations udf_adinicb_aops = {
130 .readpage = udf_adinicb_readpage, 112 .readpage = udf_adinicb_readpage,
131 .writepage = udf_adinicb_writepage, 113 .writepage = udf_adinicb_writepage,
132 .write_begin = udf_adinicb_write_begin, 114 .write_begin = udf_adinicb_write_begin,
133 .write_end = udf_adinicb_write_end, 115 .write_end = simple_write_end,
134 .direct_IO = udf_adinicb_direct_IO, 116 .direct_IO = udf_adinicb_direct_IO,
135}; 117};
136 118