Mikulas Patocka 932aba1e16 stat: fix inconsistency between struct stat and struct compat_stat
struct stat (defined in arch/x86/include/uapi/asm/stat.h) has 32-bit
st_dev and st_rdev; struct compat_stat (defined in
arch/x86/include/asm/compat.h) has 16-bit st_dev and st_rdev followed by
a 16-bit padding.

This patch fixes struct compat_stat to match struct stat.

[ Historical note: the old x86 'struct stat' did have that 16-bit field
  that the compat layer had kept around, but it was changes back in 2003
  by "struct stat - support larger dev_t":

    https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git/commit/?id=e95b2065677fe32512a597a79db94b77b90c968d

  and back in those days, the x86_64 port was still new, and separate
  from the i386 code, and had already picked up the old version with a
  16-bit st_dev field ]

Note that we can't change compat_dev_t because it is used by
compat_loop_info.

Also, if the st_dev and st_rdev values are 32-bit, we don't have to use
old_valid_dev to test if the value fits into them.  This fixes
-EOVERFLOW on filesystems that are on NVMe because NVMe uses the major
number 259.

Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Cc: Andreas Schwab <schwab@linux-m68k.org>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2022-04-12 13:35:08 -10:00
..
2022-03-31 15:49:36 -07:00
2022-03-22 18:26:56 -07:00
2022-03-22 18:26:56 -07:00
2022-03-31 15:49:36 -07:00
2022-03-22 18:26:56 -07:00
2022-04-05 08:59:37 -07:00
2022-03-31 15:49:36 -07:00
2022-04-04 22:40:14 -05:00
2022-03-22 17:03:12 -07:00
2022-01-12 11:11:34 -08:00
2022-03-22 18:26:56 -07:00
2022-04-01 14:20:24 -07:00
\n
2022-03-25 17:38:15 -07:00
2022-03-31 15:49:36 -07:00
2022-03-31 15:57:50 -07:00
2022-03-22 18:26:56 -07:00
2022-03-22 18:26:56 -07:00
2022-03-22 18:26:56 -07:00
2022-03-22 18:26:56 -07:00
2022-03-22 18:26:56 -07:00
2022-03-29 18:17:30 -07:00
2022-04-01 14:39:28 -07:00
2022-04-08 07:39:17 -10:00
2022-03-22 17:03:12 -07:00
2022-03-22 18:26:56 -07:00
2022-04-03 12:26:01 -07:00
\n
2022-03-25 17:38:15 -07:00
2022-03-22 18:26:56 -07:00
\n
2022-03-25 17:38:15 -07:00
2022-03-22 18:26:56 -07:00
2022-03-22 18:26:56 -07:00
2022-04-01 19:30:44 -07:00
2022-03-26 11:51:46 -07:00
2022-03-21 19:16:02 -07:00
2022-04-01 14:40:44 -04:00
2022-03-28 17:29:53 -07:00
2022-03-24 18:12:09 -07:00
2022-03-28 17:29:53 -07:00
2022-03-08 17:55:03 -07:00
2022-03-28 17:29:53 -07:00
2022-04-07 11:17:28 -06:00
2022-04-01 19:35:56 -07:00
2022-03-22 17:03:12 -07:00
2022-03-21 19:16:02 -07:00
2022-03-26 11:59:30 -07:00
\n
2022-01-28 17:51:31 +02:00
2022-03-08 17:55:03 -07:00