* [PATCH v2] xfs: fix wrong compat fields in xfs_ioctl32_bstat_copyin()
@ 2026-10-27 16:17 Reid Downing
2026-10-27 16:49 ` David Laight
2026-10-28 11:31 ` Reid Downing
0 siblings, 2 replies; 5+ messages in thread
From: Reid Downing @ 2026-10-27 16:17 UTC (permalink / raw)
To: Carlos Maiolino
Cc: linux-xfs, linux-kernel, Darrick J . Wong, Eric Sandeen,
Christoph Hellwig, Reid Downing, stable
bs_blocks and bs_xflags were both read from bstat32->bs_size.
Read each one from its own field instead.
Fixes: e94fc4a43e5c39 ("[XFS] Add compat handlers for swapext ioctl")
Cc: <stable@vger.kernel.org> # v2.6.29
Signed-off-by: Reid Downing <skibletz@gmail.com>
---
v2:
- Also fix bs_blocks (spotted by Eric Sandeen)
fs/xfs/xfs_ioctl32.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/xfs/xfs_ioctl32.c b/fs/xfs/xfs_ioctl32.c
index f6875a2cc70..77bc936bf0d 100644
--- a/fs/xfs/xfs_ioctl32.c
+++ b/fs/xfs/xfs_ioctl32.c
@@ -143,8 +143,8 @@ xfs_ioctl32_bstat_copyin(
xfs_ioctl32_bstime_copyin(&bstat->bs_atime, &bstat32->bs_atime) ||
xfs_ioctl32_bstime_copyin(&bstat->bs_mtime, &bstat32->bs_mtime) ||
xfs_ioctl32_bstime_copyin(&bstat->bs_ctime, &bstat32->bs_ctime) ||
- get_user(bstat->bs_blocks, &bstat32->bs_size) ||
- get_user(bstat->bs_xflags, &bstat32->bs_size) ||
+ get_user(bstat->bs_blocks, &bstat32->bs_blocks) ||
+ get_user(bstat->bs_xflags, &bstat32->bs_xflags) ||
get_user(bstat->bs_extsize, &bstat32->bs_extsize) ||
get_user(bstat->bs_extents, &bstat32->bs_extents) ||
get_user(bstat->bs_gen, &bstat32->bs_gen) ||
--
2.53.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] xfs: fix wrong compat fields in xfs_ioctl32_bstat_copyin()
2026-10-27 16:17 [PATCH v2] xfs: fix wrong compat fields in xfs_ioctl32_bstat_copyin() Reid Downing
@ 2026-10-27 16:49 ` David Laight
2026-10-28 15:18 ` Christoph Hellwig
2026-10-28 11:31 ` Reid Downing
1 sibling, 1 reply; 5+ messages in thread
From: David Laight @ 2026-10-27 16:49 UTC (permalink / raw)
To: Reid Downing
Cc: Carlos Maiolino, linux-xfs, linux-kernel, Darrick J . Wong,
Eric Sandeen, Christoph Hellwig, stable
On Tue, 27 Oct 2026 12:17:48 -0400
Reid Downing <skibletz@gmail.com> wrote:
> bs_blocks and bs_xflags were both read from bstat32->bs_size.
> Read each one from its own field instead.
It would be much better to do a single copy_from_user() of the entire
compat structure and copy the fields to the standard one.
The function would need to be 'noinline_for_stack'.
David
>
> Fixes: e94fc4a43e5c39 ("[XFS] Add compat handlers for swapext ioctl")
> Cc: <stable@vger.kernel.org> # v2.6.29
> Signed-off-by: Reid Downing <skibletz@gmail.com>
> ---
> v2:
> - Also fix bs_blocks (spotted by Eric Sandeen)
>
> fs/xfs/xfs_ioctl32.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/xfs/xfs_ioctl32.c b/fs/xfs/xfs_ioctl32.c
> index f6875a2cc70..77bc936bf0d 100644
> --- a/fs/xfs/xfs_ioctl32.c
> +++ b/fs/xfs/xfs_ioctl32.c
> @@ -143,8 +143,8 @@ xfs_ioctl32_bstat_copyin(
> xfs_ioctl32_bstime_copyin(&bstat->bs_atime, &bstat32->bs_atime) ||
> xfs_ioctl32_bstime_copyin(&bstat->bs_mtime, &bstat32->bs_mtime) ||
> xfs_ioctl32_bstime_copyin(&bstat->bs_ctime, &bstat32->bs_ctime) ||
> - get_user(bstat->bs_blocks, &bstat32->bs_size) ||
> - get_user(bstat->bs_xflags, &bstat32->bs_size) ||
> + get_user(bstat->bs_blocks, &bstat32->bs_blocks) ||
> + get_user(bstat->bs_xflags, &bstat32->bs_xflags) ||
> get_user(bstat->bs_extsize, &bstat32->bs_extsize) ||
> get_user(bstat->bs_extents, &bstat32->bs_extents) ||
> get_user(bstat->bs_gen, &bstat32->bs_gen) ||
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] xfs: fix wrong compat fields in xfs_ioctl32_bstat_copyin()
2026-10-27 16:17 [PATCH v2] xfs: fix wrong compat fields in xfs_ioctl32_bstat_copyin() Reid Downing
2026-10-27 16:49 ` David Laight
@ 2026-10-28 11:31 ` Reid Downing
1 sibling, 0 replies; 5+ messages in thread
From: Reid Downing @ 2026-10-28 11:31 UTC (permalink / raw)
To: David Laight
Cc: Carlos Maiolino, linux-xfs, linux-kernel, Darrick J . Wong,
Eric Sandeen, Christoph Hellwig, Reid Downing
Hi David, Eric, Carlos,
Thank you all for the careful review, and Eric, thanks for catching
the second line.
I looked at the refactor David suggested and Eric sketched, and I
agree it is the better way to write this function. I'm not confident
enough in the 32-bit compat code to send it myself, and I only want to
send changes I can fully vouch for. If the refactor should go in, I'd
be glad to see it done.
Reid
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] xfs: fix wrong compat fields in xfs_ioctl32_bstat_copyin()
2026-10-27 16:49 ` David Laight
@ 2026-10-28 15:18 ` Christoph Hellwig
2026-10-28 18:38 ` David Laight
0 siblings, 1 reply; 5+ messages in thread
From: Christoph Hellwig @ 2026-10-28 15:18 UTC (permalink / raw)
To: David Laight
Cc: Reid Downing, Carlos Maiolino, linux-xfs, linux-kernel,
Darrick J . Wong, Eric Sandeen, Christoph Hellwig, stable
On Tue, Oct 27, 2026 at 04:49:11PM +0000, David Laight wrote:
> On Tue, 27 Oct 2026 12:17:48 -0400
> Reid Downing <skibletz@gmail.com> wrote:
>
> > bs_blocks and bs_xflags were both read from bstat32->bs_size.
> > Read each one from its own field instead.
>
> It would be much better to do a single copy_from_user() of the entire
> compat structure and copy the fields to the standard one.
Care to explain why it would be "much better" to do two copies instead of
one? The only benefits from copy_from/to_user over the current
get_put/user is avoidind the conctant user access disabling/enabling,
but the scoped uaccess thing would do the same.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2] xfs: fix wrong compat fields in xfs_ioctl32_bstat_copyin()
2026-10-28 15:18 ` Christoph Hellwig
@ 2026-10-28 18:38 ` David Laight
0 siblings, 0 replies; 5+ messages in thread
From: David Laight @ 2026-10-28 18:38 UTC (permalink / raw)
To: Christoph Hellwig
Cc: Reid Downing, Carlos Maiolino, linux-xfs, linux-kernel,
Darrick J . Wong, Eric Sandeen, Christoph Hellwig, stable
On Wed, 28 Oct 2026 08:18:40 -0700
Christoph Hellwig <hch@infradead.org> wrote:
> On Tue, Oct 27, 2026 at 04:49:11PM +0000, David Laight wrote:
> > On Tue, 27 Oct 2026 12:17:48 -0400
> > Reid Downing <skibletz@gmail.com> wrote:
> >
> > > bs_blocks and bs_xflags were both read from bstat32->bs_size.
> > > Read each one from its own field instead.
> >
> > It would be much better to do a single copy_from_user() of the entire
> > compat structure and copy the fields to the standard one.
>
> Care to explain why it would be "much better" to do two copies instead of
> one? The only benefits from copy_from/to_user over the current
> get_put/user is avoidind the conctant user access disabling/enabling,
That is a massive hit.
The current code also has all the conditionals from access_ok().
> but the scoped uaccess thing would do the same.
True, but unnecessarily 'technical' for this bit of code.
You also save all the exception table entries - so the code size
would be rather smaller.
David
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-10-28 18:38 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-27 16:17 [PATCH v2] xfs: fix wrong compat fields in xfs_ioctl32_bstat_copyin() Reid Downing
2026-10-27 16:49 ` David Laight
2026-10-28 15:18 ` Christoph Hellwig
2026-10-28 18:38 ` David Laight
2026-10-28 11:31 ` Reid Downing
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®