lkml.org 
[lkml]   [2020]   [Jul]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 12/23] fs: remove __vfs_read
    Date
    Fold it into the two callers.

    Signed-off-by: Christoph Hellwig <hch@lst.de>
    ---
    fs/read_write.c | 43 +++++++++++++++++++++----------------------
    include/linux/fs.h | 1 -
    2 files changed, 21 insertions(+), 23 deletions(-)

    diff --git a/fs/read_write.c b/fs/read_write.c
    index a0a0b5d1d9249c..6a2170eaee64f9 100644
    --- a/fs/read_write.c
    +++ b/fs/read_write.c
    @@ -419,17 +419,6 @@ static ssize_t new_sync_read(struct file *filp, char __user *buf, size_t len, lo
    return ret;
    }

    -ssize_t __vfs_read(struct file *file, char __user *buf, size_t count,
    - loff_t *pos)
    -{
    - if (file->f_op->read)
    - return file->f_op->read(file, buf, count, pos);
    - else if (file->f_op->read_iter)
    - return new_sync_read(file, buf, count, pos);
    - else
    - return -EINVAL;
    -}
    -
    ssize_t __kernel_read(struct file *file, void *buf, size_t count, loff_t *pos)
    {
    mm_segment_t old_fs = get_fs();
    @@ -443,7 +432,12 @@ ssize_t __kernel_read(struct file *file, void *buf, size_t count, loff_t *pos)
    if (count > MAX_RW_COUNT)
    count = MAX_RW_COUNT;
    set_fs(KERNEL_DS);
    - ret = __vfs_read(file, (void __user *)buf, count, pos);
    + if (file->f_op->read)
    + ret = file->f_op->read(file, (void __user *)buf, count, pos);
    + else if (file->f_op->read_iter)
    + ret = new_sync_read(file, (void __user *)buf, count, pos);
    + else
    + ret = -EINVAL;
    set_fs(old_fs);
    if (ret > 0) {
    fsnotify_access(file);
    @@ -476,17 +470,22 @@ ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)
    return -EFAULT;

    ret = rw_verify_area(READ, file, pos, count);
    - if (!ret) {
    - if (count > MAX_RW_COUNT)
    - count = MAX_RW_COUNT;
    - ret = __vfs_read(file, buf, count, pos);
    - if (ret > 0) {
    - fsnotify_access(file);
    - add_rchar(current, ret);
    - }
    - inc_syscr(current);
    - }
    + if (ret)
    + return ret;
    + if (count > MAX_RW_COUNT)
    + count = MAX_RW_COUNT;

    + if (file->f_op->read)
    + ret = file->f_op->read(file, buf, count, pos);
    + else if (file->f_op->read_iter)
    + ret = new_sync_read(file, buf, count, pos);
    + else
    + ret = -EINVAL;
    + if (ret > 0) {
    + fsnotify_access(file);
    + add_rchar(current, ret);
    + }
    + inc_syscr(current);
    return ret;
    }

    diff --git a/include/linux/fs.h b/include/linux/fs.h
    index 22cbe7b2e91994..0c0ec76b600b50 100644
    --- a/include/linux/fs.h
    +++ b/include/linux/fs.h
    @@ -1917,7 +1917,6 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
    struct iovec *fast_pointer,
    struct iovec **ret_pointer);

    -extern ssize_t __vfs_read(struct file *, char __user *, size_t, loff_t *);
    extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);
    extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *);
    extern ssize_t vfs_readv(struct file *, const struct iovec __user *,
    --
    2.26.2
    \
     
     \ /
      Last update: 2020-07-07 19:49    [W:4.151 / U:0.092 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site