Commit c7c6363c authored by Tetsuo Handa's avatar Tetsuo Handa Committed by Viacheslav Dubeyko
Browse files

hfsplus: don't use BUG_ON() in hfsplus_create_attributes_file()



When the volume header contains erroneous values that do not reflect
the actual state of the filesystem, hfsplus_fill_super() assumes that
the attributes file is not yet created, which later results in hitting
BUG_ON() when hfsplus_create_attributes_file() is called. Replace this
BUG_ON() with -EIO error with a message to suggest running fsck tool.

Reported-by: default avatarsyzbot <syzbot+1107451c16b9eb9d29e6@syzkaller.appspotmail.com>
Closes: https://syzkaller.appspot.com/bug?extid=1107451c16b9eb9d29e6


Signed-off-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Reviewed-by: default avatarViacheslav Dubeyko <slava@dubeyko.com>
Link: https://lore.kernel.org/r/7b587d24-c8a1-4413-9b9a-00a33fbd849f@I-love.SAKURA.ne.jp


Signed-off-by: default avatarViacheslav Dubeyko <slava@dubeyko.com>
parent 4c6a567c
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -172,7 +172,11 @@ static int hfsplus_create_attributes_file(struct super_block *sb)
		return PTR_ERR(attr_file);
	}

	BUG_ON(i_size_read(attr_file) != 0);
	if (i_size_read(attr_file) != 0) {
		err = -EIO;
		pr_err("detected inconsistent attributes file, running fsck.hfsplus is recommended.\n");
		goto end_attr_file_creation;
	}

	hip = HFSPLUS_I(attr_file);