aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/exec.c17
-rw-r--r--fs/read_write.c16
2 files changed, 16 insertions, 17 deletions
diff --git a/fs/exec.c b/fs/exec.c
index 62175cbcc801..8adcc5eaa175 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -885,23 +885,6 @@ struct file *open_exec(const char *name)
885} 885}
886EXPORT_SYMBOL(open_exec); 886EXPORT_SYMBOL(open_exec);
887 887
888int kernel_read(struct file *file, loff_t offset,
889 char *addr, unsigned long count)
890{
891 mm_segment_t old_fs;
892 loff_t pos = offset;
893 int result;
894
895 old_fs = get_fs();
896 set_fs(get_ds());
897 /* The cast to a user pointer is valid due to the set_fs() */
898 result = vfs_read(file, (void __user *)addr, count, &pos);
899 set_fs(old_fs);
900 return result;
901}
902
903EXPORT_SYMBOL(kernel_read);
904
905int kernel_read_file(struct file *file, void **buf, loff_t *size, 888int kernel_read_file(struct file *file, void **buf, loff_t *size,
906 loff_t max_size, enum kernel_read_file_id id) 889 loff_t max_size, enum kernel_read_file_id id)
907{ 890{
diff --git a/fs/read_write.c b/fs/read_write.c
index 417dbe199505..1ea862bc7efd 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -415,6 +415,22 @@ ssize_t __vfs_read(struct file *file, char __user *buf, size_t count,
415} 415}
416EXPORT_SYMBOL(__vfs_read); 416EXPORT_SYMBOL(__vfs_read);
417 417
418int kernel_read(struct file *file, loff_t offset, char *addr,
419 unsigned long count)
420{
421 mm_segment_t old_fs;
422 loff_t pos = offset;
423 int result;
424
425 old_fs = get_fs();
426 set_fs(get_ds());
427 /* The cast to a user pointer is valid due to the set_fs() */
428 result = vfs_read(file, (void __user *)addr, count, &pos);
429 set_fs(old_fs);
430 return result;
431}
432EXPORT_SYMBOL(kernel_read);
433
418ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos) 434ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
419{ 435{
420 ssize_t ret; 436 ssize_t ret;