linux-stable/fs/f2fs
Eric Biggers bb4f8ead47 f2fs: fix error handling in f2fs_end_enable_verity()
commit 3c0315424f upstream.

f2fs didn't properly clean up if verity failed to be enabled on a file:

- It left verity metadata (pages past EOF) in the page cache, which
  would be exposed to userspace if the file was later extended.

- It didn't truncate the verity metadata at all (either from cache or
  from disk) if an error occurred while setting the verity bit.

Fix these bugs by adding a call to truncate_inode_pages() and ensuring
that we truncate the verity metadata (both from cache and from disk) in
all error paths.  Also rework the code to cleanly separate the success
path from the error paths, which makes it much easier to understand.

Finally, log a message if f2fs_truncate() fails, since it might
otherwise fail silently.

Reported-by: Yunlei He <heyunlei@hihonor.com>
Fixes: 95ae251fe8 ("f2fs: add fs-verity support")
Cc: <stable@vger.kernel.org> # v5.4+
Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-05-19 10:08:32 +02:00
..
acl.c f2fs: Replace spaces with tab 2019-05-08 21:23:11 -07:00
acl.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
checkpoint.c f2fs: avoid race condition for shrinker count 2021-01-06 14:48:40 +01:00
data.c f2fs: fix a wrong condition in __submit_bio 2021-03-04 10:26:24 +01:00
debug.c f2fs: avoid race condition for shrinker count 2021-01-06 14:48:40 +01:00
dir.c f2fs: fix uninit-value in f2fs_lookup 2020-11-05 11:43:13 +01:00
extent_cache.c f2fs: introduce f2fs_<level> macros to wrap f2fs_printk() 2019-07-02 15:40:40 -07:00
f2fs.h f2fs: avoid race condition for shrinker count 2021-01-06 14:48:40 +01:00
file.c f2fs: fix out-of-repair __setattr_copy() 2021-03-04 10:26:50 +01:00
gc.c f2fs: stop GC when the victim becomes fully valid 2020-10-01 13:17:21 +02:00
gc.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
hash.c f2fs: Support case-insensitive file name lookups 2019-08-23 07:57:13 -07:00
inline.c f2fs: fix a redundant call to f2fs_balance_fs if an error occurs 2021-05-19 10:08:25 +02:00
inode.c f2fs: fix to update time in lazytime mode 2020-01-04 19:16:31 +01:00
Kconfig f2fs: Add a small clarification to CONFIG_FS_F2FS_FS_SECURITY 2019-09-16 08:38:48 -07:00
Makefile f2fs: add fs-verity support 2019-08-12 19:33:51 -07:00
namei.c f2fs: fix to set/clear I_LINKABLE under i_lock 2021-03-07 12:20:46 +01:00
node.c f2fs: fix to avoid out-of-bounds memory access 2021-05-11 14:04:14 +02:00
node.h f2fs: avoid race condition for shrinker count 2021-01-06 14:48:40 +01:00
recovery.c f2fs: fix error path in do_recover_data() 2020-09-03 11:26:45 +02:00
segment.c f2fs: handle errors of f2fs_get_meta_page_nofail 2020-11-05 11:43:14 +01:00
segment.h f2fs: handle unallocated section and zone on pinned/atgc 2021-03-07 12:20:46 +01:00
shrinker.c f2fs: avoid race condition for shrinker count 2021-01-06 14:48:40 +01:00
super.c f2fs: fix shift-out-of-bounds in sanity_check_raw_super() 2021-01-06 14:48:38 +01:00
sysfs.c f2fs: wait for sysfs kobject removal before freeing f2fs_sb_info 2020-10-29 09:57:52 +01:00
trace.c f2fs: do not use mutex lock in atomic context 2019-03-05 19:58:06 -08:00
trace.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
verity.c f2fs: fix error handling in f2fs_end_enable_verity() 2021-05-19 10:08:32 +02:00
xattr.c f2fs: fix to avoid memory leakage in f2fs_listxattr 2020-04-29 16:32:55 +02:00
xattr.h f2fs: add fs-verity support 2019-08-12 19:33:51 -07:00