OSDN Git Service

f2fs: fix to check inline_xattr_size boundary correctly
authorChao Yu <yuchao0@huawei.com>
Thu, 14 Feb 2019 16:08:25 +0000 (00:08 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Thu, 14 Mar 2019 20:57:28 +0000 (13:57 -0700)
commit52bff3f6ce0fd6e9324236600cfee2780a66ffb7
treeed59cff97d8979dbbc1057235b5126f6441ddef8
parent2599cc3d728c639ea15f88a0157f1455c4179a86
f2fs: fix to check inline_xattr_size boundary correctly

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>
fs/f2fs/f2fs.h
fs/f2fs/super.c
include/linux/f2fs_fs.h