aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2013-02-23 14:51:48 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2013-02-26 02:46:11 -0500
commit7bb307e894d51308aa0582a8c4cc5875bbc645b9 (patch)
tree8b8434fe4674fb47236c0d7ca2256e7afc29f208 /fs
parent94e07a7590ae855bae0536c42b3086fadc7c83a8 (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.c6
-rw-r--r--fs/splice.c5
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
572static ssize_t kernel_write(struct file *file, const char *buf, size_t count, 572ssize_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}
586EXPORT_SYMBOL(kernel_write);
586 587
587ssize_t default_file_splice_read(struct file *in, loff_t *ppos, 588ssize_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,