lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190724130656.29436-1-icenowy@aosc.io>
Date:   Wed, 24 Jul 2019 21:06:56 +0800
From:   Icenowy Zheng <icenowy@...c.io>
To:     Jaegeuk Kim <jaegeuk@...nel.org>, Chao Yu <yuchao0@...wei.com>
Cc:     linux-f2fs-devel@...ts.sourceforge.net,
        linux-kernel@...r.kernel.org, Icenowy Zheng <icenowy@...c.io>
Subject: [PATCH] f2fs: use EINVAL for invalid superblock

The kernel mount_block_root() function expects -EACESS or -EINVAL for a
unmountable filesystem when trying to mount the root with different
filesystem types.

However, in 5.3-rc1 the behavior when F2FS code cannot find valid block
changed to return -EFSCORRUPTED(-EUCLEAN), and this error code makes
mount_block_root() fail when trying to probe F2FS. As invalid
superblocks mean the filesystem cannot be recognized as F2FS (it might
be another FS), returning -EINVAL seems more reasonable, and other
filesystems also do this.

Change back the return value to -EINVAL when no valid superblocks are
found.

Fixes: 10f966bbf521 ("f2fs: use generic EFSBADCRC/EFSCORRUPTED")
Signed-off-by: Icenowy Zheng <icenowy@...c.io>
---
This commit fixes a regression introduced in v5.3-rc1, which leads to
btrfs / cannot be mounted if no initrd is used and both f2fs and btrfs
are built-in.

 fs/f2fs/super.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 6de6cda44031..949309b9f1b8 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -2873,7 +2873,7 @@ static int read_raw_super_block(struct f2fs_sb_info *sbi,
 		if (sanity_check_raw_super(sbi, bh)) {
 			f2fs_err(sbi, "Can't find valid F2FS filesystem in %dth superblock",
 				 block + 1);
-			err = -EFSCORRUPTED;
+			err = -EINVAL;
 			brelse(bh);
 			continue;
 		}
-- 
2.21.0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ