Re: [RFC PATCH v2 2/3] xfs: Fix bulkstat compat ioctls on x32 userspace.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2018-12-17 Darrick J. Wong <darrick.wong@xxxxxxxxxx> wrote:
> On Fri, Dec 14, 2018 at 08:22:58PM -0500, Nick Bowler wrote:
[...]
>> diff --git a/fs/xfs/xfs_ioctl32.c b/fs/xfs/xfs_ioctl32.c
>> index 4c34efcbf7e8..1cdc75dca779 100644
>> --- a/fs/xfs/xfs_ioctl32.c
>> +++ b/fs/xfs/xfs_ioctl32.c
>> @@ -241,6 +241,32 @@ xfs_compat_ioc_bulkstat(
>>  	int			done;
>>  	int			error;
>>
>> +	/*
>> +	 * Output structure handling functions.  Depending on the command,
>> +	 * either the xfs_bstat and xfs_inogrp structures are written out
>> +	 * to userpace memory via bulkreq.ubuffer.  Normally the compat
>> +	 * functions and structure size are the correct ones to use ...
>> +	 */
>> +	inumbers_fmt_pf inumbers_func = xfs_inumbers_fmt_compat;
>> +	bulkstat_one_pf	bs_one_func = xfs_bulkstat_one_compat;
>> +	size_t bs_one_size = sizeof(compat_xfs_bstat_t);
>> +
>> +#ifdef CONFIG_X86_X32
>> +	if (in_x32_syscall()) {
>> +		/*
>> +		 * ... but on x32 the input xfs_fsop_bulkreq has pointers
>> +		 * which must be handled in the "compat" (32-bit) way, while
>> +		 * the xfs_bstat and xfs_inogrp structures follow native 64-
>> +		 * bit layout convention.  So adjust accordingly, otherwise
>> +		 * the data written out in compat layout will not match what
>> +		 * x32 userspace expects.
>> +		 */
>> +		inumbers_func = xfs_inumbers_fmt;
>> +		bs_one_func = xfs_bulkstat_one;
>> +		bs_one_size = sizeof(xfs_bstat_t);
>
> struct xfs_bstat, not xfs_bstat_t, because we're gradually getting rid
> of the structure typedefs.  If I don't hear any other objections in the
> next day or so I'll fix this when I pull in this patch.

Makes sense.  I'll only change this on my end if I have to respin the
series for some other reason then.  I guess the sizeof(compat_xfs_bstat_t)
just before this should be similarly changed as well?

> Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx>

Thanks,
  Nick



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux