kern/67326: [msdosfs] crash after attempt to mount write protected MSDOS fs

Gerhard Gonter g.gonter at ieee.org
Fri Dec 29 04:11:42 PST 2006


Remko Lodder wrote:
> Synopsis: [msdosfs] crash after attempt to mount write protected MSDOS fs
> 
> State-Changed-From-To: open->feedback
> State-Changed-By: remko
> State-Changed-When: Mon Dec 25 11:12:21 UTC 2006
> State-Changed-Why: 
> Hello can you tell me whether this is still accurate on newer versions
> of FreeBSD? (6.x pref.)
> [...]
> http://www.freebsd.org/cgi/query-pr.cgi?pr=67326

Thanks for the reply.  I just tried to mount a write protected MSDOS
FS (a memory stick with write protection enabled) on

gg# uname -a
FreeBSD gg.iris-net.home 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE #5: Tue
Dec 26 16:53:20 CET 2006
gonter at gg.iris-net.home:/usr/obj/usr/src/sys/GENERIC  i386

to recreate the situation that led to the crash when I submitted
the PR.  I first inserted the memory stick with write enabled, mounted
it in rw mode and unmounted it again.  Then I removed it, switched to
write protection mode an re-inserted the stick.  This time I got an
error:

gg# mount -t msdos /dev/da0s1 /mnt
mount_msdosfs: /dev/da0s1: Permission denied

AFAIR, when I submitted the PR, I also received this error.

The system crashed again shortly after ...

gg# mount -o ro -t msdos /dev/da0s1 /mnt
gg# umount /mnt

I may be wrong, but I think the problem was initiated by the mount
in rw mode and later resulted in the crash.  Here are the log messages
from the first insertion with rw enabled an the second insertion
with write protection:

Dec 29 03:45:05 gg kernel: umass0: vendor 0x1043 product 0x8006, rev
1.10/1.00, addr 2
Dec 29 03:45:05 gg kernel: da0 at umass-sim0 bus 0 target 0 lun 0
Dec 29 03:45:05 gg kernel: da0: <UM 2.0 USB Flash Driver %z!Y> Removable
Direct Access SCSI-2 device
Dec 29 03:45:05 gg kernel: da0: 1.000MB/s transfers
Dec 29 03:45:05 gg kernel: da0: 1005MB (2060032 512 byte sectors: 64H
32S/T 1005C)
Dec 29 04:13:02 gg kernel: umass0: at uhub1 port 3 (addr 2) disconnected
Dec 29 04:13:02 gg kernel: (da0:umass-sim0:0:0:0): lost device
Dec 29 04:13:02 gg kernel: (da0:umass-sim0:0:0:0): removing device entry
Dec 29 04:13:02 gg kernel: umass0: detached

memory stick removed, write protection turned on, memory stick
re-inserted:

Dec 29 04:13:25 gg kernel: umass0: vendor 0x1043 product 0x8006, rev
1.10/1.00, addr 2
Dec 29 04:13:25 gg kernel: da0 at umass-sim0 bus 0 target 0 lun 0
Dec 29 04:13:25 gg kernel: da0: <UM 2.0 USB Flash Driver %z!Y> Removable
Direct Access SCSI-2 device
Dec 29 04:13:25 gg kernel: da0: 1.000MB/s transfers
Dec 29 04:13:25 gg kernel: da0: 1005MB (2060032 512 byte sectors: 64H
32S/T 1005C)

first mount attempt:

gg# mount -t msdos /dev/da0s1 /mnt
mount_msdosfs: /dev/da0s1: Permission denied

Dec 29 04:14:02 gg kernel: (da0:umass-sim0:0:0:0): WRITE(10). CDB: 2a 0
0 0 0 28 0 0 8 0
Dec 29 04:14:02 gg kernel: (da0:umass-sim0:0:0:0): CAM Status: SCSI
Status Error
Dec 29 04:14:02 gg kernel: (da0:umass-sim0:0:0:0): SCSI Status: Check
Condition
Dec 29 04:14:02 gg kernel: (da0:umass-sim0:0:0:0): DATA PROTECT asc:27,0
Dec 29 04:14:02 gg kernel: (da0:umass-sim0:0:0:0): Write protected
Dec 29 04:14:02 gg kernel: (da0:umass-sim0:0:0:0): Unretryable error
Dec 29 04:14:02 gg kernel: g_vfs_done():da0s1[WRITE(offset=4096,
length=4096)]error = 13
Dec 29 04:14:02 gg kernel: (da0:umass-sim0:0:0:0): WRITE(10). CDB: 2a 0
0 0 0 28 0 0 8 0
Dec 29 04:14:02 gg kernel: (da0:umass-sim0:0:0:0): CAM Status: SCSI
Status Error
Dec 29 04:14:02 gg kernel: (da0:umass-sim0:0:0:0): SCSI Status: Check
Condition
Dec 29 04:14:02 gg kernel: (da0:umass-sim0:0:0:0): DATA PROTECT asc:27,0
Dec 29 04:14:02 gg kernel: (da0:umass-sim0:0:0:0): Write protected
Dec 29 04:14:02 gg kernel: (da0:umass-sim0:0:0:0): Unretryable error
Dec 29 04:14:02 gg kernel: g_vfs_done():da0s1[WRITE(offset=4096,
length=4096)]error = 13
Dec 29 04:14:02 gg kernel: fsync: giving up on dirty
Dec 29 04:14:02 gg kernel: 0xc3364110: tag devfs, type VCHR
Dec 29 04:14:02 gg kernel: usecount 1, writecount 0, refcount 35
mountedhere 0xc333de00
Dec 29 04:14:02 gg kernel: flags ()
Dec 29 04:14:02 gg kernel: v_object 0xc33888c4 ref 0 pages 33
Dec 29 04:14:02 gg kernel:
Dec 29 04:14:02 gg kernel: dev da0s1
Dec 29 04:14:31 gg kernel: g_vfs_done():da0s1[WRITE(offset=4096,
length=4096)]error = 1
Dec 29 04:15:00 gg kernel: g_vfs_done():da0s1[WRITE(offset=4096,
length=4096)]error = 1
Dec 29 04:16:56 gg last message repeated 4 times

second mount attempt and unmount:

gg# mount -o ro -t msdos /dev/da0s1 /mnt
gg# umount /mnt

Dec 29 04:27:06 gg last message repeated 21 times
Dec 29 04:27:24 gg kernel: g_vfs_done():da0s1[WRITE(offset=4096,
length=4096)]error = 1
Dec 29 04:27:24 gg kernel: fsync: giving up on dirty
Dec 29 04:27:24 gg kernel: 0xc3364110: tag devfs, type VCHR
Dec 29 04:27:24 gg kernel: usecount 1, writecount 0, refcount 39
mountedhere 0xc333de00
Dec 29 04:27:24 gg kernel: flags ()
Dec 29 04:27:24 gg kernel: v_object 0xc33888c4 ref 0 pages 49
Dec 29 04:27:24 gg kernel:
Dec 29 04:27:24 gg kernel: dev da0s1

Dec 29 04:29:21 gg syslogd: kernel boot file is /boot/kernel/kernel

HTH and please let me know if I can help in any other way.

Thanks!

GG


More information about the freebsd-bugs mailing list