linux-brain/fs/squashfs
Phillip Lougher 6b9882c69e Squashfs: Compute expected length from inode size rather than block length
[ Upstream commit a3f94cb99a ]

Previously in squashfs_readpage() when copying data into the page
cache, it used the length of the datablock read from the filesystem
(after decompression).  However, if the filesystem has been corrupted
this data block may be short, which will leave pages unfilled.

The fix for this is to compute the expected number of bytes to copy
from the inode size, and use this to detect if the block is short.

Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
Tested-by: Willy Tarreau <w@1wt.eu>
Cc: Анатолий Тросиненко <anatoly.trosinenko@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-09-05 09:20:03 +02:00
..
Kconfig Squashfs: Add LZ4 compression configuration option 2014-11-27 18:48:44 +00:00
Makefile Squashfs: Add LZ4 compression configuration option 2014-11-27 18:48:44 +00:00
block.c squashfs: more metadata hardening 2018-08-06 16:23:03 +02:00
cache.c squashfs: be more careful about metadata corruption 2018-08-03 07:55:26 +02:00
decompressor.c mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
decompressor.h Squashfs: Add LZ4 compression configuration option 2014-11-27 18:48:44 +00:00
decompressor_multi.c Squashfs: Check stream is not NULL in decompressor_multi.c 2013-11-20 03:59:20 +00:00
decompressor_multi_percpu.c Squashfs: Generalise paging handling in the decompressors 2013-11-20 03:59:01 +00:00
decompressor_single.c Squashfs: Generalise paging handling in the decompressors 2013-11-20 03:59:01 +00:00
dir.c romfs, squashfs: switch to ->iterate_shared() 2016-05-09 11:41:15 -04:00
export.c VFS: normal filesystems (and lustre): d_inode() annotations 2015-04-15 15:06:57 -04:00
file.c Squashfs: Compute expected length from inode size rather than block length 2018-09-05 09:20:03 +02:00
file_cache.c Squashfs: Compute expected length from inode size rather than block length 2018-09-05 09:20:03 +02:00
file_direct.c Squashfs: Compute expected length from inode size rather than block length 2018-09-05 09:20:03 +02:00
fragment.c squashfs: more metadata hardenings 2018-08-06 16:23:03 +02:00
id.c Squashfs: Fix sanity check patches on big-endian systems 2011-05-29 10:03:09 +01:00
inode.c vfs: Remove {get,set,remove}xattr inode operations 2016-10-07 21:48:36 -04:00
lz4_wrapper.c mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
lzo_wrapper.c mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
namei.c vfs: Remove {get,set,remove}xattr inode operations 2016-10-07 21:48:36 -04:00
page_actor.c mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
page_actor.h mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
squashfs.h Squashfs: Compute expected length from inode size rather than block length 2018-09-05 09:20:03 +02:00
squashfs_fs.h squashfs: be more careful about metadata corruption 2018-08-03 07:55:26 +02:00
squashfs_fs_i.h fs: cleanup slight list_entry abuse 2015-06-23 18:01:59 -04:00
squashfs_fs_sb.h squashfs: more metadata hardenings 2018-08-06 16:23:03 +02:00
super.c squashfs: more metadata hardenings 2018-08-06 16:23:03 +02:00
symlink.c vfs: Remove {get,set,remove}xattr inode operations 2016-10-07 21:48:36 -04:00
xattr.c xattr_handler: pass dentry and inode as separate arguments of ->get() 2016-04-10 20:48:24 -04:00
xattr.h vfs: Remove {get,set,remove}xattr inode operations 2016-10-07 21:48:36 -04:00
xattr_id.c Squashfs: update email address 2011-05-26 10:49:11 +01:00
xz_wrapper.c mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
zlib_wrapper.c mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00