lkml.org 
[lkml]   [2019]   [Dec]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 077/209] xfs: Align compat attrlist_by_handle with native implementation.
    Date
    From: Nick Bowler <nbowler@draconx.ca>

    [ Upstream commit c456d64449efe37da50832b63d91652a85ea1d20 ]

    While inspecting the ioctl implementations, I noticed that the compat
    implementation of XFS_IOC_ATTRLIST_BY_HANDLE does not do exactly the
    same thing as the native implementation. Specifically, the "cursor"
    does not appear to be written out to userspace on the compat path,
    like it is on the native path.

    This adjusts the compat implementation to copy out the cursor just
    like the native implementation does. The attrlist cursor does not
    require any special compat handling. This fixes xfstests xfs/269
    on both IA-32 and x32 userspace, when running on an amd64 kernel.

    Signed-off-by: Nick Bowler <nbowler@draconx.ca>
    Fixes: 0facef7fb053b ("xfs: in _attrlist_by_handle, copy the cursor back to userspace")
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/xfs/xfs_ioctl32.c | 6 ++++++
    1 file changed, 6 insertions(+)

    diff --git a/fs/xfs/xfs_ioctl32.c b/fs/xfs/xfs_ioctl32.c
    index fa0bc4d46065a..d3c0e4b8bf421 100644
    --- a/fs/xfs/xfs_ioctl32.c
    +++ b/fs/xfs/xfs_ioctl32.c
    @@ -347,6 +347,7 @@ xfs_compat_attrlist_by_handle(
    {
    int error;
    attrlist_cursor_kern_t *cursor;
    + compat_xfs_fsop_attrlist_handlereq_t __user *p = arg;
    compat_xfs_fsop_attrlist_handlereq_t al_hreq;
    struct dentry *dentry;
    char *kbuf;
    @@ -381,6 +382,11 @@ xfs_compat_attrlist_by_handle(
    if (error)
    goto out_kfree;

    + if (copy_to_user(&p->pos, cursor, sizeof(attrlist_cursor_kern_t))) {
    + error = -EFAULT;
    + goto out_kfree;
    + }
    +
    if (copy_to_user(compat_ptr(al_hreq.buffer), kbuf, al_hreq.buflen))
    error = -EFAULT;

    --
    2.20.1


    \
     
     \ /
      Last update: 2019-12-04 19:05    [W:4.726 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site