linux-stable/fs/f2fs
Chao Yu 4ab78f4d75 f2fs: fix to check inline_xattr_size boundary correctly
[ Upstream commit 500e0b28ec ]

We use below condition to check inline_xattr_size boundary:

	if (!F2FS_OPTION(sbi).inline_xattr_size ||
		F2FS_OPTION(sbi).inline_xattr_size >=
				DEF_ADDRS_PER_INODE -
				F2FS_TOTAL_EXTRA_ATTR_SIZE -
				DEF_INLINE_RESERVED_SIZE -
				DEF_MIN_INLINE_SIZE)

There is there problems in that check:
- we should allow inline_xattr_size equaling to min size of inline
{data,dentry} area.
- F2FS_TOTAL_EXTRA_ATTR_SIZE and inline_xattr_size are based on
different size unit, previous one is 4 bytes, latter one is 1 bytes.
- DEF_MIN_INLINE_SIZE only indicate min size of inline data area,
however, we need to consider min size of inline dentry area as well,
minimal inline dentry should at least contain two entries: '.' and
'..', so that min inline_dentry size is 40 bytes.

.bitmap		1 * 1 = 1
.reserved	1 * 1 = 1
.dentry		11 * 2 = 22
.filename	8 * 2 = 16
total		40

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-04-05 22:32:59 +02:00
..
acl.c f2fs: fix wrong return value of f2fs_acl_create 2019-02-12 19:47:02 +01:00
acl.h f2fs: remove dead code f2fs_check_acl 2016-09-14 16:52:36 -07:00
checkpoint.c f2fs: fix to flush all dirty inodes recovered in readonly fs 2018-11-13 11:08:38 -08:00
data.c f2fs: fix race between write_checkpoint and write_begin 2019-02-12 19:47:02 +01:00
debug.c f2fs: Allocate and stat mem used by free nid bitmap more accurately 2018-07-28 18:23:26 -07:00
dir.c f2fs: rework fault injection handling to avoid a warning 2018-08-14 09:49:15 -07:00
extent_cache.c f2fs: avoid sleeping under spin_lock 2018-11-13 11:08:37 -08:00
f2fs.h f2fs: fix to check inline_xattr_size boundary correctly 2019-04-05 22:32:59 +02:00
file.c f2fs: wait on atomic writes to count F2FS_CP_WB_DATA 2019-03-19 13:12:41 +01:00
gc.c f2fs: readahead encrypted block during GC 2018-08-20 23:13:42 -07:00
gc.h f2fs: introduce sbi->gc_mode to determine the policy 2018-05-31 11:31:51 -07:00
hash.c f2fs: check entire encrypted bigname when finding a dentry 2017-05-04 11:44:35 -04:00
inline.c f2fs: fix to avoid deadlock in f2fs_read_inline_dir() 2019-04-05 22:32:56 +02:00
inode.c f2fs: fix to recover cold bit of inode block during POR 2018-11-13 11:08:39 -08:00
Kconfig fs/*/Kconfig: drop links to 404-compliant http://acl.bestbits.at 2018-01-01 12:45:37 -07:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
namei.c f2fs: Replace strncpy with memcpy 2018-07-28 18:26:08 -07:00
node.c f2fs: read page index before freeing 2019-01-09 17:38:46 +01:00
node.h f2fs: let checkpoint flush dnode page of regular 2018-08-01 11:52:36 -07:00
recovery.c f2fs: fix to flush all dirty inodes recovered in readonly fs 2018-11-13 11:08:38 -08:00
segment.c f2fs: fix to avoid deadlock of atomic file operations 2019-03-27 14:14:42 +09:00
segment.h f2fs: avoid fi->i_gc_rwsem[WRITE] lock in f2fs_gc 2018-08-20 23:13:42 -07:00
shrinker.c f2fs: fix sbi->extent_list corruption issue 2019-02-12 19:47:17 +01:00
super.c f2fs: fix to check inline_xattr_size boundary correctly 2019-04-05 22:32:59 +02:00
sysfs.c f2fs: fix performance issue observed with multi-thread sequential read 2018-08-20 23:13:42 -07:00
trace.c f2fs: do not use mutex lock in atomic context 2019-04-05 22:32:59 +02:00
trace.h f2fs: add sbi and page pointer in f2fs_io_info 2015-05-28 15:41:32 -07:00
xattr.c f2fs: fix to adapt small inline xattr space in __find_inline_xattr() 2019-04-05 22:32:55 +02:00
xattr.h f2fs: guard macro variables with braces 2017-04-10 19:48:10 -07:00