Skip to content

Commit

Permalink
ufs: Fix mount check in ufs_fill_super()
Browse files Browse the repository at this point in the history
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: Satyam Sharma <[email protected]>
Cc: Evgeniy Dushistov <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Satyam Sharma authored and Linus Torvalds committed Oct 17, 2007
1 parent bcd6d4e commit 48ef09a
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions fs/ufs/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -933,19 +933,20 @@ static int ufs_fill_super(struct super_block *sb, void *data, int silent)
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) ||
((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))))) {
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)))) {
switch(usb1->fs_clean) {
case UFS_FSCLEAN:
UFSD("fs is clean\n");
Expand Down

0 comments on commit 48ef09a

Please sign in to comment.