We assume that modification of some special application could result in zeroed name_len, or it is consciously made by somebody. We will deadloop in find_in_block when name_len of dir entry is zero.
This patch is added for preventing deadloop in above scenario. Signed-off-by: Chao Yu <chao2...@samsung.com> --- fs/f2fs/dir.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/fs/f2fs/dir.c b/fs/f2fs/dir.c index be8c7af..4316ec5 100644 --- a/fs/f2fs/dir.c +++ b/fs/f2fs/dir.c @@ -121,6 +121,16 @@ static struct f2fs_dir_entry *find_in_block(struct page *dentry_page, } } + /* check name_len to prevent from deadloop here */ + if (unlikely(de->name_len == 0)) { + struct inode *inode = dentry_page->mapping->host; + + f2fs_msg(inode->i_sb, KERN_ERR, + "zero-length dir entry, ino = %lu, name = %s", + (unsigned long)inode->i_ino, name->name); + break; + } + bit_start = bit_pos + GET_DENTRY_SLOTS(le16_to_cpu(de->name_len)); } -- 1.7.9.5 ------------------------------------------------------------------------------ Open source business process management suite built on Java and Eclipse Turn processes into business applications with Bonita BPM Community Edition Quickly connect people, data, and systems into organized workflows Winner of BOSSIE, CODIE, OW2 and Gartner awards http://p.sf.net/sfu/Bonitasoft _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel