Files
linux/fs/xfs
Nick Bowler e56109035e xfs: Fix bulkstat compat ioctls on x32 userspace.
[ Upstream commit 7ca860e3c1 ]

The bulkstat family of ioctls are problematic on x32, because there is
a mixup of native 32-bit and 64-bit conventions.  The xfs_fsop_bulkreq
struct contains pointers and 32-bit integers so that matches the native
32-bit layout, and that means the ioctl implementation goes into the
regular compat path on x32.

However, the 'ubuffer' member of that struct in turn refers to either
struct xfs_inogrp or xfs_bstat (or an array of these).  On x32, those
structures match the native 64-bit layout.  The compat implementation
writes out the 32-bit version of these structures.  This is not the
expected format for x32 userspace, causing problems.

Fortunately the functions which actually output these xfs_inogrp and
xfs_bstat structures have an easy way to select which output format
is required, so we just need a little tweak to select the right format
on x32.

Signed-off-by: Nick Bowler <nbowler@draconx.ca>
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>
2019-12-05 15:34:37 +01:00
..
2017-10-08 10:26:11 +02:00
2017-10-08 10:26:11 +02:00
2016-10-04 18:06:40 -07:00
2018-02-03 17:05:40 +01:00
2016-10-04 11:05:44 -07:00
2017-09-20 08:20:02 +02:00
2017-10-08 10:26:11 +02:00
2016-06-01 17:38:15 +10:00
2017-06-07 12:07:52 +02:00