diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2013-02-23 14:51:48 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2013-02-26 02:46:11 -0500 |
commit | 7bb307e894d51308aa0582a8c4cc5875bbc645b9 (patch) | |
tree | 8b8434fe4674fb47236c0d7ca2256e7afc29f208 /fs | |
parent | 94e07a7590ae855bae0536c42b3086fadc7c83a8 (diff) |
export kernel_write(), convert open-coded instances
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ecryptfs/read_write.c | 6 | ||||
-rw-r--r-- | fs/splice.c | 5 |
2 files changed, 4 insertions, 7 deletions
diff --git a/fs/ecryptfs/read_write.c b/fs/ecryptfs/read_write.c index b2a34a192f4f..6a160539cd23 100644 --- a/fs/ecryptfs/read_write.c +++ b/fs/ecryptfs/read_write.c | |||
@@ -40,16 +40,12 @@ int ecryptfs_write_lower(struct inode *ecryptfs_inode, char *data, | |||
40 | loff_t offset, size_t size) | 40 | loff_t offset, size_t size) |
41 | { | 41 | { |
42 | struct file *lower_file; | 42 | struct file *lower_file; |
43 | mm_segment_t fs_save; | ||
44 | ssize_t rc; | 43 | ssize_t rc; |
45 | 44 | ||
46 | lower_file = ecryptfs_inode_to_private(ecryptfs_inode)->lower_file; | 45 | lower_file = ecryptfs_inode_to_private(ecryptfs_inode)->lower_file; |
47 | if (!lower_file) | 46 | if (!lower_file) |
48 | return -EIO; | 47 | return -EIO; |
49 | fs_save = get_fs(); | 48 | rc = kernel_write(lower_file, data, size, offset); |
50 | set_fs(get_ds()); | ||
51 | rc = vfs_write(lower_file, data, size, &offset); | ||
52 | set_fs(fs_save); | ||
53 | mark_inode_dirty_sync(ecryptfs_inode); | 49 | mark_inode_dirty_sync(ecryptfs_inode); |
54 | return rc; | 50 | return rc; |
55 | } | 51 | } |
diff --git a/fs/splice.c b/fs/splice.c index 963213d56403..718bd0056384 100644 --- a/fs/splice.c +++ b/fs/splice.c | |||
@@ -569,7 +569,7 @@ static ssize_t kernel_readv(struct file *file, const struct iovec *vec, | |||
569 | return res; | 569 | return res; |
570 | } | 570 | } |
571 | 571 | ||
572 | static ssize_t kernel_write(struct file *file, const char *buf, size_t count, | 572 | ssize_t kernel_write(struct file *file, const char *buf, size_t count, |
573 | loff_t pos) | 573 | loff_t pos) |
574 | { | 574 | { |
575 | mm_segment_t old_fs; | 575 | mm_segment_t old_fs; |
@@ -578,11 +578,12 @@ static ssize_t kernel_write(struct file *file, const char *buf, size_t count, | |||
578 | old_fs = get_fs(); | 578 | old_fs = get_fs(); |
579 | set_fs(get_ds()); | 579 | set_fs(get_ds()); |
580 | /* The cast to a user pointer is valid due to the set_fs() */ | 580 | /* The cast to a user pointer is valid due to the set_fs() */ |
581 | res = vfs_write(file, (const char __user *)buf, count, &pos); | 581 | res = vfs_write(file, (__force const char __user *)buf, count, &pos); |
582 | set_fs(old_fs); | 582 | set_fs(old_fs); |
583 | 583 | ||
584 | return res; | 584 | return res; |
585 | } | 585 | } |
586 | EXPORT_SYMBOL(kernel_write); | ||
586 | 587 | ||
587 | ssize_t default_file_splice_read(struct file *in, loff_t *ppos, | 588 | ssize_t default_file_splice_read(struct file *in, loff_t *ppos, |
588 | struct pipe_inode_info *pipe, size_t len, | 589 | struct pipe_inode_info *pipe, size_t len, |