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 043/437] ecryptfs: miscdev: convert to read/write iterators
    Date
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    ---
    fs/ecryptfs/miscdev.c | 24 +++++++++++-------------
    1 file changed, 11 insertions(+), 13 deletions(-)

    diff --git a/fs/ecryptfs/miscdev.c b/fs/ecryptfs/miscdev.c
    index 4e62c3cef70f..6ea67a64e2ff 100644
    --- a/fs/ecryptfs/miscdev.c
    +++ b/fs/ecryptfs/miscdev.c
    @@ -309,6 +309,7 @@ ecryptfs_miscdev_read(struct file *file, char __user *buf, size_t count,
    mutex_unlock(&daemon->mux);
    return rc;
    }
    +FOPS_READ_ITER_HELPER(ecryptfs_miscdev_read);

    /**
    * ecryptfs_miscdev_response - miscdevess response to message previously sent to daemon
    @@ -342,22 +343,20 @@ static int ecryptfs_miscdev_response(struct ecryptfs_daemon *daemon, char *data,

    /**
    * ecryptfs_miscdev_write - handle write to daemon miscdev handle
    - * @file: File for misc dev handle
    - * @buf: Buffer containing user data
    - * @count: Amount of data in @buf
    - * @ppos: Pointer to offset in file (ignored)
    + * @iocb: Metadata for IO
    + * @from: Buffer containing user data
    *
    * Returns the number of bytes read from @buf
    */
    static ssize_t
    -ecryptfs_miscdev_write(struct file *file, const char __user *buf,
    - size_t count, loff_t *ppos)
    +ecryptfs_miscdev_write(struct kiocb *iocb, struct iov_iter *from)
    {
    __be32 counter_nbo;
    u32 seq;
    size_t packet_size, packet_size_length;
    char *data;
    unsigned char packet_size_peek[ECRYPTFS_MAX_PKT_LEN_SIZE];
    + size_t count = iov_iter_count(from);
    ssize_t rc;

    if (count == 0) {
    @@ -372,8 +371,8 @@ ecryptfs_miscdev_write(struct file *file, const char __user *buf,
    return -EINVAL;
    }

    - if (copy_from_user(packet_size_peek, &buf[PKT_LEN_OFFSET],
    - sizeof(packet_size_peek))) {
    + if (!copy_from_iter_full(packet_size_peek, sizeof(packet_size_peek),
    + from)) {
    printk(KERN_WARNING "%s: Error while inspecting packet size\n",
    __func__);
    return -EFAULT;
    @@ -395,7 +394,7 @@ ecryptfs_miscdev_write(struct file *file, const char __user *buf,
    }

    memdup:
    - data = memdup_user(buf, count);
    + data = iterdup(from, count);
    if (IS_ERR(data)) {
    printk(KERN_ERR "%s: memdup_user returned error [%ld]\n",
    __func__, PTR_ERR(data));
    @@ -416,7 +415,7 @@ ecryptfs_miscdev_write(struct file *file, const char __user *buf,
    }
    memcpy(&counter_nbo, &data[PKT_CTR_OFFSET], PKT_CTR_SIZE);
    seq = be32_to_cpu(counter_nbo);
    - rc = ecryptfs_miscdev_response(file->private_data,
    + rc = ecryptfs_miscdev_response(iocb->ki_filp->private_data,
    &data[PKT_LEN_OFFSET + packet_size_length],
    packet_size, seq);
    if (rc) {
    @@ -442,13 +441,12 @@ ecryptfs_miscdev_write(struct file *file, const char __user *buf,
    return rc;
    }

    -
    static const struct file_operations ecryptfs_miscdev_fops = {
    .owner = THIS_MODULE,
    .open = ecryptfs_miscdev_open,
    .poll = ecryptfs_miscdev_poll,
    - .read = ecryptfs_miscdev_read,
    - .write = ecryptfs_miscdev_write,
    + .read_iter = ecryptfs_miscdev_read_iter,
    + .write_iter = ecryptfs_miscdev_write,
    .release = ecryptfs_miscdev_release,
    .llseek = noop_llseek,
    };
    --
    2.43.0

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