From trevor@jpj.net Thu Dec  2 14:46:41 1999
Return-Path: <trevor@jpj.net>
Received: from blues.jpj.net (blues.jpj.net [204.97.17.146])
	by hub.freebsd.org (Postfix) with ESMTP id 74B4F14C5A
	for <FreeBSD-gnats-submit@freebsd.org>; Thu,  2 Dec 1999 14:46:37 -0800 (PST)
	(envelope-from trevor@jpj.net)
Received: from localhost (trevor@localhost)
	by blues.jpj.net (right/backatcha) with SMTP id RAA28356
	for <FreeBSD-gnats-submit@freebsd.org>; Thu, 2 Dec 1999 17:46:25 -0500 (EST)
Message-Id: <Pine.BSI.3.96.991202170052.27977A-100000@blues.jpj.net>
Date: Thu, 2 Dec 1999 17:46:24 -0500 (EST)
From: Trevor Johnson <trevor@jpj.net>
To: FreeBSD-gnats-submit@freebsd.org
Subject: use of write-protected FAT12 floppy causes panic

>Number:         15230
>Category:       kern
>Synopsis:       use of write-protected FAT12 floppy causes panic
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Dec  2 14:50:00 PST 1999
>Closed-Date:    Fri Dec 3 03:48:11 PST 1999
>Last-Modified:  Fri Dec  3 03:50:19 PST 1999
>Originator:     Trevor Johnson (trevor@jpj.net)
>Release:        3.3-STABLE
>Organization:
none
>Environment:

FreeBSD ws99.fusi.dom 3.3-19990924-STABLE FreeBSD 3.3-19990924-STABLE #0:
Sun Sep 26 21:08:48 PDT 1999
root@myname.my.domain:/usr/src/sys/compile/topside i386

(kernel configuration appended to the "Fix" field)

>Description:

System crashes and reboots when a DOS-formatted floppy with the
write-protect tab in the read-only position is used, then unmounted.  I've
also seen variations of this (one variation:  I tried to remove files from
the mounted floppy) with 3.3-RELEASE and 3.2-19990713-STABLE, under X and
with syscons.  It happens with double-density and high-density 3.5" disks
in a high-density drive; I've not tried 5.25" ones.  Under other operating
systems, I saw no obvious defects in the disks or their contents. 

>How-To-Repeat:

Put write-protected FAT12 floppy in drive.

# mount_msdos /dev/fd0 /mnt
# cd /mnt
# scp * user@host:/path/
# cd /
# sync
# umount /mnt

Wait for reboot.  Run fsck manually if prompted to do so.

>Fix:

Unknown--perhaps the "-r" option to mount_msdos would make a difference,
but IMO there should be a more graceful response when it it omitted,
especially because some computers are operated remotely, without anyone
present to examine write-protect tabs.  It's also conceivable that someone
might have a cron job which mounts and reads (or even tries to write!) a
floppy while the comptuer is unattended.  Perhaps the mount could fail, or
a read-only mount could be made, and an error message generated in either
case. 

#
# GENERIC -- Generic machine with WD/AHx/NCR/BTx family disks
#
# For more information on this file, please read the handbook section on
# Kernel Configuration Files:
#
#    http://www.freebsd.org/handbook/kernelconfig-config.html
#
# The handbook is also available locally in /usr/share/doc/handbook
# if you've installed the doc distribution, otherwise always see the
# FreeBSD World Wide Web server (http://www.FreeBSD.ORG/) for the
# latest information.
#
# An exhaustive list of options and more detailed explanations of the
# device lines is also present in the ./LINT configuration file. If you are
# in doubt as to the purpose or necessity of a line, check first in LINT.
#
#	$Id: GENERIC,v 1.143.2.16 1999/07/02 04:04:53 jkh Exp $

machine		"i386"
#cpu		"I386_CPU"
#cpu		"I486_CPU"
#cpu		"I586_CPU"
cpu		"I686_CPU"
ident		topside
maxusers	32

#options		MATH_EMULATE		#Support for x87 emulation
options		INET			#InterNETworking
options		FFS			#Berkeley Fast Filesystem
options		FFS_ROOT		#FFS usable as root device [keep this!]
options		MFS			#Memory Filesystem
options		MFS_ROOT		#MFS usable as root device, "MFS" req'ed
options		NFS			#Network Filesystem
options		NFS_ROOT		#NFS usable as root device, "NFS" req'ed
options		MSDOSFS			#MSDOS Filesystem
options		"CD9660"		#ISO 9660 Filesystem
options		"CD9660_ROOT"		#CD-ROM usable as root. "CD9660" req'ed
options		PROCFS			#Process filesystem
options		"COMPAT_43"		#Compatible with BSD 4.3 [KEEP THIS!]
options		SCSI_DELAY=10000	#Be pessimistic about Joe SCSI device
options		UCONSOLE		#Allow users to grab the console
options		FAILSAFE		#Be conservative
options		USERCONFIG		#boot -c editor
options		VISUAL_USERCONFIG	#visual boot -c editor

config		kernel	root on wd0

# To make an SMP kernel, the next two are needed
#options	SMP			# Symmetric MultiProcessor Kernel
#options	APIC_IO			# Symmetric (APIC) I/O
# Optionally these may need tweaked, (defaults shown):
#options	NCPU=2			# number of CPUs
#options	NBUS=4			# number of busses
#options	NAPIC=1			# number of IO APICs
#options	NINTR=24		# number of INTs

controller	isa0

# Enable PnP support in the kernel.  This allows you to automaticly
# attach to PnP cards for drivers that support it and allows you to
# configure cards from USERCONFIG.  See pnp(4) for more info.
controller      pnp0
#controller	eisa0
controller	pci0

controller	fdc0	at isa? port "IO_FD1" bio irq 6 drq 2
disk		fd0	at fdc0 drive 0
disk		fd1	at fdc0 drive 1

#options		"CMD640"	# work around CMD640 chip deficiency
controller	wdc0	at isa? port "IO_WD1" bio irq 14
disk		wd0	at wdc0 drive 0
disk		wd1	at wdc0 drive 1

controller	wdc1	at isa? port "IO_WD2" bio irq 15
disk		wd2	at wdc1 drive 0
disk		wd3	at wdc1 drive 1

options		ATAPI		#Enable ATAPI support for IDE bus
options		ATAPI_STATIC	#Don't do it as an LKM
device		acd0		#IDE CD-ROM
#device		wfd0		#IDE Floppy (e.g. LS-120)

# A single entry for any of these controllers (ncr, ahb, ahc) is
# sufficient for any number of installed devices.
#controller	ncr0
#controller	ahb0
#controller	ahc0
#controller	isp0

# This controller offers a number of configuration options, too many to
# document here  - see the LINT file in this directory and look up the
# dpt0 entry there for much fuller documentation on this.
controller      dpt0

#controller	adv0	at isa? port ? cam irq ?
#controller	adw0
#controller	bt0	at isa? port ? cam irq ?
controller	aha0	at isa? port ? cam irq ?

controller	scbus0

device		da0

device		sa0

device		pass0

device		cd0	#Only need one of these, the code dynamically grows

#device		wt0	at isa? port 0x300 bio irq 5 drq 1
#device		mcd0	at isa? port 0x300 bio irq 10

#controller	matcd0	at isa? port 0x230 bio

#device		scd0	at isa? port 0x230 bio

# atkbdc0 controlls both the keyboard and the PS/2 mouse
controller	atkbdc0	at isa? port IO_KBD tty
device		atkbd0	at isa? tty irq 1
device		psm0	at isa? tty irq 12

device		vga0	at isa? port ? conflicts

# splash screen/screen saver
#pseudo-device	splash

# syscons is the default console driver, resembling an SCO console
device		sc0	at isa? tty
# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver
#device		vt0	at isa? tty
#options		XSERVER			# support for X server
#options		FAT_CURSOR		# start with block cursor
# If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines
#options		PCVT_SCANSET=2		# IBM keyboards are non-std

device		npx0	at isa? port IO_NPX irq 13

#
# Laptop support (see LINT for more options)
#
device		apm0    at isa?	disable	flags 0x31 # Advanced Power Management

# PCCARD (PCMCIA) support
#controller	card0
#device		pcic0	at card?
#device		pcic1	at card?

device		sio0	at isa? port "IO_COM1" flags 0x10 tty irq 4
device		sio1	at isa? port "IO_COM2" tty irq 3
device		sio2	at isa? disable port "IO_COM3" tty irq 5
device		sio3	at isa? disable port "IO_COM4" tty irq 9

# Parallel port
device		ppc0	at isa? port? flags 0x40 net irq 7
controller	ppbus0
device		lpt0	at ppbus?
device		plip0	at ppbus?
device		ppi0	at ppbus?
#controller	vpo0	at ppbus?

#
# The following Ethernet NICs are all PCI devices.
#
#device al0		# ADMtek AL981 (``Comet'')
#device ax0		# ASIX AX88140A
#device de0		# DEC/Intel DC21x4x (``Tulip'')
#device fxp0		# Intel EtherExpress PRO/100B (82557, 82558)
#device mx0		# Macronix 98713/98715/98725 (``PMAC'')
#device pn0		# Lite-On 82c168/82c169 (``PNIC'')
#device rl0		# RealTek 8129/8139
#device tl0		# Texas Instruments ThunderLAN
#device tx0		# SMC 9432TX (83c170 ``EPIC'')
#device vr0		# VIA Rhine, Rhine II
#device vx0		# 3Com 3c590, 3c595 (``Vortex'')
#device wb0		# Winbond W89C840F
#device xl0		# 3Com 3c90x (``Boomerang'', ``Cyclone'')

# Order is important here due to intrusive probes, do *not* alphabetize
# this list of network interfaces until the probes have been fixed.
# Right now it appears that the ie0 must be probed before ep0. See
# revision 1.20 of this file.

device ed0 at isa? port 0x280 net irq 10 iomem 0xd8000
#device ie0 at isa? port 0x300 net irq 10 iomem 0xd0000
#device ep0 at isa? port 0x300 net irq 10
#device ex0 at isa? port? net irq?
#device fe0 at isa? port 0x300 net irq ?
#device le0 at isa? port 0x300 net irq 5 iomem 0xd0000
#device lnc0 at isa? port 0x280 net irq 10 drq 0
#device xe0 at isa? port? net irq ?
#device ze0 at isa? port 0x300 net irq 10 iomem 0xd8000
#device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000
#device cs0 at isa? port 0x300 net irq ?

pseudo-device	loop
pseudo-device	ether
#pseudo-device	sl	1
pseudo-device	ppp	1
pseudo-device	tun	1
pseudo-device	pty	16
pseudo-device	gzip		# Exec gzipped a.out's

# KTRACE enables the system-call tracing facility ktrace(2).
# This adds 4 KB bloat to your kernel, and slightly increases
# the costs of each syscall.
options		KTRACE		#kernel tracing

# This provides support for System V shared memory and message queues.
#
options		SYSVSHM
options		SYSVMSG
options		SYSVSEM

#  The `bpfilter' pseudo-device enables the Berkeley Packet Filter.  Be
#  aware of the legal and administrative consequences of enabling this
#  option.  The number of devices determines the maximum number of
#  simultaneous BPF clients programs runnable.
#pseudo-device	bpfilter 4	#Berkeley packet filter

controller      snd0
device sb0      at isa? port 0x220 irq 5 drq 1
device sbxvi0   at isa? drq 5
device sbmidi0  at isa? port 0x330
device awe0     at isa? port 0x620
device opl0     at isa? port 0x388
device mpu0     at isa? port 0x330 irq 6 drq 0
device uart0 at isa? port 0x330 irq 5
device awe0     at isa? port 0x620 conflicts

# for Wine
options            USER_LDT

#
# Allow processes to switch to vm86 mode, as well as enabling direct
# user-mode access to the I/O port space.  This option is necessary for 
# the doscmd emulator to run and the VESA modes in syscons to be available.
#
options         "VM86"



>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->closed 
State-Changed-By: sheldonh 
State-Changed-When: Fri Dec 3 03:48:11 PST 1999 
State-Changed-Why:  
Duplicate of numerous existing PR's.  Check at least PR 12983, 
PR 10959, PR 10828 and PR 13632. 
>Unformatted:
