Subject: kern/7473: Crash in usbd_abort_pipe when closing detached mouse
To: None <gnats-bugs@gnats.netbsd.org>
From: Dave Huang <khym@bga.com>
List: netbsd-bugs
Date: 04/25/1999 21:05:47
>Number: 7473
>Category: kern
>Synopsis: Crash in usbd_abort_pipe when closing detached mouse
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: kern-bug-people (Kernel Bug People)
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sun Apr 25 21:05:00 1999
>Last-Modified:
>Originator: Dave Huang
>Organization:
Name: Dave Huang | Mammal, mammal / their names are called /
INet: khym@bga.com | they raise a paw / the bat, the cat /
FurryMUCK: Dahan | dolphin and dog / koala bear and hog -- TMBG
Dahan: Hani G Y+C 23 Y++ L+++ W- C++ T++ A+ E+ S++ V++ F- Q+++ P+ B+ PA+ PL++
>Release: NetBSD-1.4_BETA as of April 25, 1999
>Environment:
System: NetBSD fluff.metonymy.com 1.4_BETA NetBSD 1.4_BETA (FLUFF) #17: Sun Apr 25 14:31:46 CDT 1999 khym@dahan.metonymy.com:/usr/src.local/sys/arch/i386/compile/FLUFF i386
>Description:
If a process opens a USB mouse device, then the mouse is
unplugged, when the process closes the device, the kernel crashes with
a uvm_fault at the first line of usbd_abort_pipe() (the if statement).
>How-To-Repeat:
Plug in mouse:
ums0 at uhub0 port 1 configuration 1 interface 0
ums0: Kensington Mouse-in-a-Box, rev 1.00/1.41, addr 2, iclass 3/1
ums0: 3 buttons and Z dir.
wsmouse1 at ums0
% hexdump -C /dev/wsmouse1
Unplug mouse:
uhub0: port error, restarting port 1
ums0: at uhub0 port 1 (addr 2) disconnected
^C the hexdump:
uvm_fault(0xf55f2e70, 0xdeadb000, 0, 1) -> 1
kernel: page fault trap, code=0
Stopped in hexdump at _usbd_abort_pipe+0xe: cmpl $0,0x4(%eax)
db> t
_usbd_abort_pipe(...) at _usbd_abort_pipe+0xe
_ums_disable(...) at _ums_disable+0xf
_wsmouseclose(...) at _wsmouseclose+0x35
_spec_close(...) at _spec_close+0x102
_nfsspec_close(...) at _nfsspec_close+0xb4
_vn_close(...) at _vn_close+0x50
_vn_closefile(...) at _vn_closefile+0x19
_closef(...) at _closef+0x132
_fdfree(...) at _fdfree+0x3e
_exit1(...) at _exit1+0xe5
_sigexit(...) at _sigexit+0x3c
_postsig(2) at _postsig+0xb0
_syscall() at _syscall+0x252
--- syscall (number 3) ---
0x4007a769:
db>
>Fix:
Unknown
>Audit-Trail:
>Unformatted: