xfs: compat_ioctl: use compat_ptr()
authorChristoph Hellwig <hch@lst.de>
Fri, 16 Aug 2019 06:41:06 +0000 (23:41 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Sat, 17 Aug 2019 01:42:59 +0000 (18:42 -0700)
For 31-bit s390 user space, we have to pass pointer arguments through
compat_ptr() in the compat_ioctl handler.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/xfs_ioctl32.c

index bae08ef92ac3f0f410c22c067ddd9960708a55ec..7bd7534f5051bb571fc1933df695d5405301c0b9 100644 (file)
@@ -547,7 +547,7 @@ xfs_file_compat_ioctl(
        struct inode            *inode = file_inode(filp);
        struct xfs_inode        *ip = XFS_I(inode);
        struct xfs_mount        *mp = ip->i_mount;
-       void                    __user *arg = (void __user *)p;
+       void                    __user *arg = compat_ptr(p);
        int                     error;
 
        trace_xfs_file_compat_ioctl(ip);
@@ -655,6 +655,6 @@ xfs_file_compat_ioctl(
                return xfs_compat_fssetdm_by_handle(filp, arg);
        default:
                /* try the native version */
-               return xfs_file_ioctl(filp, cmd, p);
+               return xfs_file_ioctl(filp, cmd, (unsigned long)arg);
        }
 }