linux/fs/udf
Steve Magnani b490bdd630 udf: Fix 64-bit sign extension issues affecting blocks > 0x7FFFFFFF
Large (> 1 TiB) UDF filesystems appear subject to several problems when
mounted on 64-bit systems:

* readdir() can fail on a directory containing File Identifiers residing
  above 0x7FFFFFFF. This manifests as a 'ls' command failing with EIO.

* FIBMAP on a file block located above 0x7FFFFFFF can return a negative
  value. The low 32 bits are correct, but applications that don't mask the
  high 32 bits of the result can perform incorrectly.

Per suggestion by Jan Kara, introduce a udf_pblk_t type for representation
of UDF block addresses. Ultimately, all driver functions that manipulate
UDF block addresses should use this type; for now, deployment is limited
to functions with actual or potential sign extension issues.

Changes to udf_readdir() and udf_block_map() address the issues noted
above; other changes address potential similar issues uncovered during
audit of the driver code.

Signed-off-by: Steven J. Magnani <steve@digidescorp.com>
Signed-off-by: Jan Kara <jack@suse.cz>
2017-10-17 11:56:45 +02:00
..
Kconfig udf: Update Kconfig description 2015-01-05 11:04:37 +01:00
Makefile switch udf to simple_fsync() 2009-06-11 21:36:13 -04:00
balloc.c udf: Fix 64-bit sign extension issues affecting blocks > 0x7FFFFFFF 2017-10-17 11:56:45 +02:00
dir.c udf: Fix 64-bit sign extension issues affecting blocks > 0x7FFFFFFF 2017-10-17 11:56:45 +02:00
directory.c udf: Fix 64-bit sign extension issues affecting blocks > 0x7FFFFFFF 2017-10-17 11:56:45 +02:00
ecma_167.h udf: use __packed instead of __attribute__ ((packed)) 2017-01-10 11:29:11 +01:00
file.c udf: Use i_size_read() in udf_adinicb_writepage() 2017-06-14 11:21:01 +02:00
ialloc.c udf: Fix 64-bit sign extension issues affecting blocks > 0x7FFFFFFF 2017-10-17 11:56:45 +02:00
inode.c udf: Fix 64-bit sign extension issues affecting blocks > 0x7FFFFFFF 2017-10-17 11:56:45 +02:00
lowlevel.c udf: atomically read inode size 2017-01-10 11:57:34 +01:00
misc.c udf: Fix 64-bit sign extension issues affecting blocks > 0x7FFFFFFF 2017-10-17 11:56:45 +02:00
namei.c udf: Fix 64-bit sign extension issues affecting blocks > 0x7FFFFFFF 2017-10-17 11:56:45 +02:00
osta_udf.h udf: use __packed instead of __attribute__ ((packed)) 2017-01-10 11:29:11 +01:00
partition.c udf: Use correct partition reference number for metadata 2016-05-19 13:00:35 +02:00
super.c udf: Fix 64-bit sign extension issues affecting blocks > 0x7FFFFFFF 2017-10-17 11:56:45 +02:00
symlink.c statx: Add a system call to make enhanced file info available 2017-03-02 20:51:15 -05:00
truncate.c udf: Fix 64-bit sign extension issues affecting blocks > 0x7FFFFFFF 2017-10-17 11:56:45 +02:00
udf_i.h fs: cleanup slight list_entry abuse 2015-06-23 18:01:59 -04:00
udf_sb.h udf: Use correct partition reference number for metadata 2016-05-19 13:00:35 +02:00
udfdecl.h udf: Fix 64-bit sign extension issues affecting blocks > 0x7FFFFFFF 2017-10-17 11:56:45 +02:00
udfend.h Remove struct typedefs from fs/udf/ecma_167.h et al. 2009-04-02 12:29:47 +02:00
udftime.c udf: Convert udf_disk_stamp_to_time() to use mktime64() 2017-06-14 11:21:02 +02:00
unicode.c udf: Fix conversion of 'dstring' fields to UTF8 2016-04-25 15:18:50 +02:00