diff options
author | Satyam Sharma <satyam@infradead.org> | 2007-10-17 02:26:53 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-17 11:42:51 -0400 |
commit | 48ef09a16edcc98d1de60f66ed7f650c571907f4 (patch) | |
tree | 4f7f8198407fd39f0ed0663d592b548853d1141c /fs/ufs/super.c | |
parent | bcd6d4ecf6868ed57d4daae5d48e52d0752566d2 (diff) |
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: Satyam Sharma <satyam@infradead.org>
Cc: Evgeniy Dushistov <dushistov@mail.ru>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/ufs/super.c')
-rw-r--r-- | fs/ufs/super.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/fs/ufs/super.c b/fs/ufs/super.c index 4d72933661b7..584cf12cc40f 100644 --- a/fs/ufs/super.c +++ b/fs/ufs/super.c | |||
@@ -933,19 +933,20 @@ magic_found: | |||
933 | goto again; | 933 | goto again; |
934 | } | 934 | } |
935 | 935 | ||
936 | sbi->s_flags = flags;/*after that line some functions use s_flags*/ | 936 | /* Set sbi->s_flags here, used by ufs_get_fs_state() below */ |
937 | sbi->s_flags = flags; | ||
937 | ufs_print_super_stuff(sb, usb1, usb2, usb3); | 938 | ufs_print_super_stuff(sb, usb1, usb2, usb3); |
938 | 939 | ||
939 | /* | 940 | /* |
940 | * Check, if file system was correctly unmounted. | 941 | * Check, if file system was correctly unmounted. |
941 | * If not, make it read only. | 942 | * If not, make it read only. |
942 | */ | 943 | */ |
943 | if (((flags & UFS_ST_MASK) == UFS_ST_44BSD) || | 944 | if ((((flags & UFS_ST_MASK) == UFS_ST_44BSD) || |
944 | ((flags & UFS_ST_MASK) == UFS_ST_OLD) || | 945 | ((flags & UFS_ST_MASK) == UFS_ST_OLD) || |
945 | (((flags & UFS_ST_MASK) == UFS_ST_SUN || | 946 | ((flags & UFS_ST_MASK) == UFS_ST_SUN) || |
946 | (flags & UFS_ST_MASK) == UFS_ST_SUNOS || | 947 | ((flags & UFS_ST_MASK) == UFS_ST_SUNOS) || |
947 | (flags & UFS_ST_MASK) == UFS_ST_SUNx86) && | 948 | ((flags & UFS_ST_MASK) == UFS_ST_SUNx86)) && |
948 | (ufs_get_fs_state(sb, usb1, usb3) == (UFS_FSOK - fs32_to_cpu(sb, usb1->fs_time))))) { | 949 | (ufs_get_fs_state(sb, usb1, usb3) == (UFS_FSOK - fs32_to_cpu(sb, usb1->fs_time)))) { |
949 | switch(usb1->fs_clean) { | 950 | switch(usb1->fs_clean) { |
950 | case UFS_FSCLEAN: | 951 | case UFS_FSCLEAN: |
951 | UFSD("fs is clean\n"); | 952 | UFSD("fs is clean\n"); |