Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 48ef09a1 authored by Satyam Sharma's avatar Satyam Sharma Committed by Linus Torvalds
Browse files

ufs: Fix mount check in ufs_fill_super()



The current code skips the check to verify whether the filesystem was
previously cleanly unmounted, if (flags & UFS_ST_MASK) == UFS_ST_44BSD or
UFS_ST_OLD.  This looks like an inadvertent bug that slipped in due to
parantheses in the compound conditional to me, especially given that
ufs_get_fs_state() handles the UFS_ST_44BSD case perfectly well.  So, let's
fix the compound condition appropriately.

Signed-off-by: default avatarSatyam Sharma <satyam@infradead.org>
Cc: Evgeniy Dushistov <dushistov@mail.ru>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent bcd6d4ec
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -933,19 +933,20 @@ magic_found:
		goto again;
	}

	sbi->s_flags = flags;/*after that line some functions use s_flags*/
	/* Set sbi->s_flags here, used by ufs_get_fs_state() below */
	sbi->s_flags = flags;
	ufs_print_super_stuff(sb, usb1, usb2, usb3);

	/*
	 * Check, if file system was correctly unmounted.
	 * If not, make it read only.
	 */
	if (((flags & UFS_ST_MASK) == UFS_ST_44BSD) ||
	if ((((flags & UFS_ST_MASK) == UFS_ST_44BSD)	||
	     ((flags & UFS_ST_MASK) == UFS_ST_OLD)	||
	  (((flags & UFS_ST_MASK) == UFS_ST_SUN || 
	    (flags & UFS_ST_MASK) == UFS_ST_SUNOS ||
	  (flags & UFS_ST_MASK) == UFS_ST_SUNx86) && 
	  (ufs_get_fs_state(sb, usb1, usb3) == (UFS_FSOK - fs32_to_cpu(sb, usb1->fs_time))))) {
	     ((flags & UFS_ST_MASK) == UFS_ST_SUN)	||
	     ((flags & UFS_ST_MASK) == UFS_ST_SUNOS)	||
	     ((flags & UFS_ST_MASK) == UFS_ST_SUNx86))	&&
	    (ufs_get_fs_state(sb, usb1, usb3) == (UFS_FSOK - fs32_to_cpu(sb, usb1->fs_time)))) {
		switch(usb1->fs_clean) {
		case UFS_FSCLEAN:
			UFSD("fs is clean\n");