lkml.org 
[lkml]   [2010]   [Aug]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH -V19 04/15] vfs: Add handle based readlink syscall
    Date
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    ---
    fs/stat.c | 28 ++++++++++++++++++++++++++++
    include/linux/syscalls.h | 3 +++
    2 files changed, 31 insertions(+), 0 deletions(-)

    diff --git a/fs/stat.c b/fs/stat.c
    index 12e90e2..29052eb 100644
    --- a/fs/stat.c
    +++ b/fs/stat.c
    @@ -319,6 +319,34 @@ SYSCALL_DEFINE3(readlink, const char __user *, path, char __user *, buf,
    return sys_readlinkat(AT_FDCWD, path, buf, bufsiz);
    }

    +SYSCALL_DEFINE4(handle_readlink, int, mountdirfd,
    + struct file_handle __user *, ufh,
    + char __user *, buf, int, bufsiz)
    +{
    + long retval = 0;
    + struct path path;
    + struct inode *inode;
    +
    + if (bufsiz <= 0)
    + return -EINVAL;
    + retval = handle_to_path(mountdirfd, ufh, &path);
    + if (retval)
    + goto out_err;
    +
    + inode = path.dentry->d_inode;
    + retval = -EINVAL;
    + if (inode->i_op->readlink) {
    + retval = security_inode_readlink(path.dentry);
    + if (!retval) {
    + touch_atime(path.mnt, path.dentry);
    + retval = inode->i_op->readlink(path.dentry,
    + buf, bufsiz);
    + }
    + }
    + path_put(&path);
    +out_err:
    + return retval;
    +}

    /* ---------- LFS-64 ----------- */
    #ifdef __ARCH_WANT_STAT64
    diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
    index 4dc527c..35ecae3 100644
    --- a/include/linux/syscalls.h
    +++ b/include/linux/syscalls.h
    @@ -838,4 +838,7 @@ asmlinkage long sys_name_to_handle_at(int dfd, const char __user *name,
    asmlinkage long sys_open_by_handle_at(int mountdirfd,
    struct file_handle __user *handle,
    int flags);
    +asmlinkage long sys_handle_readlink(int mountdirfd,
    + struct file_handle __user *ufh,
    + char __user *buf, int bufsiz);
    #endif
    --
    1.7.0.4


    \
     
     \ /
      Last update: 2010-08-27 13:07    [W:0.021 / U:1.404 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site