lkml.org 
[lkml]   [2024]   [Apr]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 031/437] char/ppdev: convert to read/write iterators
    Date
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    ---
    drivers/char/ppdev.c | 18 ++++++++++--------
    1 file changed, 10 insertions(+), 8 deletions(-)

    diff --git a/drivers/char/ppdev.c b/drivers/char/ppdev.c
    index ee951b265213..4176b2b59dc9 100644
    --- a/drivers/char/ppdev.c
    +++ b/drivers/char/ppdev.c
    @@ -112,10 +112,11 @@ static inline void pp_enable_irq(struct pp_struct *pp)
    port->ops->enable_irq(port);
    }

    -static ssize_t pp_read(struct file *file, char __user *buf, size_t count,
    - loff_t *ppos)
    +static ssize_t pp_read(struct kiocb *iocb, struct iov_iter *to)
    {
    + struct file *file = iocb->ki_filp;
    unsigned int minor = iminor(file_inode(file));
    + size_t count = iov_iter_count(to);
    struct pp_struct *pp = file->private_data;
    char *kbuffer;
    ssize_t bytes_read = 0;
    @@ -182,7 +183,7 @@ static ssize_t pp_read(struct file *file, char __user *buf, size_t count,

    parport_set_timeout(pp->pdev, pp->default_inactivity);

    - if (bytes_read > 0 && copy_to_user(buf, kbuffer, bytes_read))
    + if (bytes_read > 0 && !copy_to_iter_full(kbuffer, bytes_read, to))
    bytes_read = -EFAULT;

    kfree(kbuffer);
    @@ -190,10 +191,11 @@ static ssize_t pp_read(struct file *file, char __user *buf, size_t count,
    return bytes_read;
    }

    -static ssize_t pp_write(struct file *file, const char __user *buf,
    - size_t count, loff_t *ppos)
    +static ssize_t pp_write(struct kiocb *iocb, struct iov_iter *from)
    {
    + struct file *file = iocb->ki_filp;
    unsigned int minor = iminor(file_inode(file));
    + size_t count = iov_iter_count(from);
    struct pp_struct *pp = file->private_data;
    char *kbuffer;
    ssize_t bytes_written = 0;
    @@ -222,7 +224,7 @@ static ssize_t pp_write(struct file *file, const char __user *buf,
    while (bytes_written < count) {
    ssize_t n = min_t(unsigned long, count - bytes_written, PP_BUFFER_SIZE);

    - if (copy_from_user(kbuffer, buf + bytes_written, n)) {
    + if (!copy_from_iter_full(kbuffer, n, from)) {
    bytes_written = -EFAULT;
    break;
    }
    @@ -780,8 +782,8 @@ static const struct class ppdev_class = {
    static const struct file_operations pp_fops = {
    .owner = THIS_MODULE,
    .llseek = no_llseek,
    - .read = pp_read,
    - .write = pp_write,
    + .read_iter = pp_read,
    + .write_iter = pp_write,
    .poll = pp_poll,
    .unlocked_ioctl = pp_ioctl,
    .compat_ioctl = compat_ptr_ioctl,
    --
    2.43.0

    \
     
     \ /
      Last update: 2024-05-27 16:36    [W:3.163 / U:0.092 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site