diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-13 19:45:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-13 19:45:40 -0400 |
commit | cec997093bbff881c3da49084dfba4f76361e96a (patch) | |
tree | 7c84f8c30ceef7209a18d7cd216a3c16536008c5 /fs/udf/file.c | |
parent | 8d2d441ac4af223eae466c3c31ff737cc31a1411 (diff) | |
parent | 01777836c87081e4f68c4a43c9abe6114805f91e (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.c | 22 |
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 | ||
103 | static 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 | |||
121 | static ssize_t udf_adinicb_direct_IO(int rw, struct kiocb *iocb, | 103 | static 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 | ||