lkml.org 
[lkml]   [2008]   [Jun]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch -v2 04/23] ipc: use simple_read_from_buffer
    Also this patch kills unneccesary trailing NULL character.

    Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
    ---
    ipc/mqueue.c | 25 +++++++------------------
    1 file changed, 7 insertions(+), 18 deletions(-)

    Index: 2.6-git/ipc/mqueue.c
    ===================================================================
    --- 2.6-git.orig/ipc/mqueue.c
    +++ 2.6-git/ipc/mqueue.c
    @@ -314,15 +314,11 @@ static int mqueue_unlink(struct inode *d
    * through std routines)
    */
    static ssize_t mqueue_read_file(struct file *filp, char __user *u_data,
    - size_t count, loff_t * off)
    + size_t count, loff_t *off)
    {
    struct mqueue_inode_info *info = MQUEUE_I(filp->f_path.dentry->d_inode);
    char buffer[FILENT_SIZE];
    - size_t slen;
    - loff_t o;
    -
    - if (!count)
    - return 0;
    + ssize_t ret;

    spin_lock(&info->lock);
    snprintf(buffer, sizeof(buffer),
    @@ -335,21 +331,14 @@ static ssize_t mqueue_read_file(struct f
    pid_vnr(info->notify_owner));
    spin_unlock(&info->lock);
    buffer[sizeof(buffer)-1] = '\0';
    - slen = strlen(buffer)+1;
    -
    - o = *off;
    - if (o > slen)
    - return 0;
    -
    - if (o + count > slen)
    - count = slen - o;

    - if (copy_to_user(u_data, buffer + o, count))
    - return -EFAULT;
    + ret = simple_read_from_buffer(u_data, count, off, buffer,
    + strlen(buffer));
    + if (ret <= 0)
    + return ret;

    - *off = o + count;
    filp->f_path.dentry->d_inode->i_atime = filp->f_path.dentry->d_inode->i_ctime = CURRENT_TIME;
    - return count;
    + return ret;
    }

    static int mqueue_flush_file(struct file *filp, fl_owner_t id)
    --


    \
     
     \ /
      Last update: 2008-06-02 01:31    [W:0.040 / U:31.460 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site