refuse plain ufs mount
Hi,
There's a semantic change introduced by this patch. I don't know enough about UFS to call it a bug, but it certainly looks suspicious.
Quoted 12 lines
ufs/super.c renamed from ufs/super.c.org +1
-1@@ -516,7 +516,7 @@printk ("wrong mount options\n" ); goto failed; } -if (!(sbi->s_mount_opt &UFS_MOUNT_UFSTYPE )) { +if (!(sbi->s_mount_opt &UFS_MOUNT_UFSTYPE ) && !silent) {printk ("You didn't specify the type of your ufs filesystem\n\n" "mount -t ufs -o ufstype=" "sun|sunx86|44bsd|old|hp|nextstep|netxstep-cd|openstep ...\n\n"
ufs/super.c line 580
Quoted 7 lines
ufs/super.c renamed from ufs/super.c.org +1
-1@@ -575,7 +575,7 @@ uspi->s_sbsize = super_block_size =2048 ; uspi->s_sbbase =0 ; flags |=UFS_DE_OLD |UFS_UID_OLD |UFS_ST_OLD |UFS_CG_OLD ; -if (!(sb->s_flags &MS_RDONLY )) { +if (!(sb->s_flags &MS_RDONLY ) && !silent) {printk (KERN_INFO "ufstype=old is supported read-only\n" ); sb->s_flags |=MS_RDONLY ;
If "silent" is set, this variable assignment is skipped. I would have thought that the assignment should happen, and only the printk() should be skipped.
ufs/super.c line 594
Quoted 9 lines
ufs/super.c renamed from ufs/super.c.org +1
-1}@@ -589,7 +589,7 @@ uspi->s_sbsize = super_block_size =2048 ; uspi->s_sbbase =0 ; flags |=UFS_DE_OLD |UFS_UID_OLD |UFS_ST_OLD |UFS_CG_OLD ; -if (!(sb->s_flags &MS_RDONLY )) { +if (!(sb->s_flags &MS_RDONLY ) && !silent) {printk (KERN_INFO "ufstype=nextstep is supported read-only\n" ); sb->s_flags |=MS_RDONLY ;
Same here.
ufs/super.c line 608
Quoted 9 lines
ufs/super.c renamed from ufs/super.c.org +1
-1}@@ -603,7 +603,7 @@ uspi->s_sbsize = super_block_size =2048 ; uspi->s_sbbase =0 ; flags |=UFS_DE_OLD |UFS_UID_OLD |UFS_ST_OLD |UFS_CG_OLD ; -if (!(sb->s_flags &MS_RDONLY )) { +if (!(sb->s_flags &MS_RDONLY ) && !silent) {printk (KERN_INFO "ufstype=nextstep-cd is supported read-only\n" ); sb->s_flags |=MS_RDONLY ;
And again.
ufs/super.c line 622
Quoted 9 lines
ufs/super.c renamed from ufs/super.c.org +1
-1}@@ -617,7 +617,7 @@ uspi->s_sbsize = super_block_size =2048 ; uspi->s_sbbase =0 ; flags |=UFS_DE_44BSD |UFS_UID_44BSD |UFS_ST_44BSD |UFS_CG_44BSD ; -if (!(sb->s_flags &MS_RDONLY )) { +if (!(sb->s_flags &MS_RDONLY ) && !silent) {printk (KERN_INFO "ufstype=openstep is supported read-only\n" ); sb->s_flags |=MS_RDONLY ;
Another one.
ufs/super.c line 636
Quoted 9 lines
ufs/super.c renamed from ufs/super.c.org +1
-1}@@ -631,13 +631,14 @@ uspi->s_sbsize = super_block_size =2048 ; uspi->s_sbbase =0 ; flags |=UFS_DE_OLD |UFS_UID_OLD |UFS_ST_OLD |UFS_CG_OLD ; -if (!(sb->s_flags &MS_RDONLY )) { +if (!(sb->s_flags &MS_RDONLY ) && !silent) {printk (KERN_INFO "ufstype=hp is supported read-only\n" ); sb->s_flags |=MS_RDONLY ;
And again.
Quoted 18 lines
ufs/super.c renamed from ufs/super.c.org +4
-2}break ;default : -printk ("unknown ufstype\n" ); +if (!silent) +printk ("unknown ufstype\n" ); goto failed; }@@ -687,7 +688,8 @@ uspi->s_sbbase +=8 ; goto again; } -printk ("ufs_read_super: bad magic number\n" ); +if (!silent) +printk ("ufs_read_super: bad magic number\n" ); goto failed;
Quoted 1 line
magic_found:
Kind regards,
Jon
At Wed, 28 Jan 2004 22:24:30 +0000,
Quoted 3 lines · Example
There's a semantic change introduced by this patch. I don't know enough about UFS to call it a bug, but it certainly looks suspicious.
Exactly. Thanks for your check, and I'm sorry the previous patch which includes such wrong change. I attached the update one.
Regards,
-- gotom
ufs/super.c renamed from ufs/super.c.org +20 -12
@@ -517,11 +517,12 @@ goto failed; }if (!(sbi->s_mount_opt &UFS_MOUNT_UFSTYPE )) { -printk ("You didn't specify the type of your ufs filesystem\n\n" -"mount -t ufs -o ufstype=" -"sun|sunx86|44bsd|old|hp|nextstep|netxstep-cd|openstep ...\n\n" -">>>WARNING<<< Wrong ufstype may corrupt your filesystem, " -"default is ufstype=old\n" ); +if (!silent) +printk ("You didn't specify the type of your ufs filesystem\n\n" +"mount -t ufs -o ufstype=" +"sun|sunx86|44bsd|old|hp|nextstep|netxstep-cd|openstep ...\n\n" +">>>WARNING<<< Wrong ufstype may corrupt your filesystem, " +"default is ufstype=old\n" );ufs_set_opt (sbi->s_mount_opt,UFSTYPE_OLD ); }
@@ -576,7 +577,8 @@ uspi->s_sbbase =0 ; flags |=UFS_DE_OLD |UFS_UID_OLD |UFS_ST_OLD |UFS_CG_OLD ;if (!(sb->s_flags &MS_RDONLY )) { -printk (KERN_INFO "ufstype=old is supported read-only\n" ); +if (!silent) +printk (KERN_INFO "ufstype=old is supported read-only\n" ); sb->s_flags |=MS_RDONLY ; }break ;
@@ -590,7 +592,8 @@ uspi->s_sbbase =0 ; flags |=UFS_DE_OLD |UFS_UID_OLD |UFS_ST_OLD |UFS_CG_OLD ;if (!(sb->s_flags &MS_RDONLY )) { -printk (KERN_INFO "ufstype=nextstep is supported read-only\n" ); +if (!silent) +printk (KERN_INFO "ufstype=nextstep is supported read-only\n" ); sb->s_flags |=MS_RDONLY ; }break ;
@@ -604,7 +607,8 @@ uspi->s_sbbase =0 ; flags |=UFS_DE_OLD |UFS_UID_OLD |UFS_ST_OLD |UFS_CG_OLD ;if (!(sb->s_flags &MS_RDONLY )) { -printk (KERN_INFO "ufstype=nextstep-cd is supported read-only\n" ); +if (!silent) +printk (KERN_INFO "ufstype=nextstep-cd is supported read-only\n" ); sb->s_flags |=MS_RDONLY ; }break ;
@@ -618,7 +622,8 @@ uspi->s_sbbase =0 ; flags |=UFS_DE_44BSD |UFS_UID_44BSD |UFS_ST_44BSD |UFS_CG_44BSD ;if (!(sb->s_flags &MS_RDONLY )) { -printk (KERN_INFO "ufstype=openstep is supported read-only\n" ); +if (!silent) +printk (KERN_INFO "ufstype=openstep is supported read-only\n" ); sb->s_flags |=MS_RDONLY ; }break ;
@@ -632,12 +637,14 @@ uspi->s_sbbase =0 ; flags |=UFS_DE_OLD |UFS_UID_OLD |UFS_ST_OLD |UFS_CG_OLD ;if (!(sb->s_flags &MS_RDONLY )) { -printk (KERN_INFO "ufstype=hp is supported read-only\n" ); +if (!silent) +printk (KERN_INFO "ufstype=hp is supported read-only\n" ); sb->s_flags |=MS_RDONLY ; }break ;default : -printk ("unknown ufstype\n" ); +if (!silent) +printk ("unknown ufstype\n" ); goto failed; }
@@ -687,7 +694,8 @@ uspi->s_sbbase +=8 ; goto again; } -printk ("ufs_read_super: bad magic number\n" ); +if (!silent) +printk ("ufs_read_super: bad magic number\n" ); goto failed; magic_found: