NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kern/50810: Kernel page fault trap in ugenclose()
>Number: 50810
>Category: kern
>Synopsis: Kernel page fault trap in ugenclose()
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Mon Feb 15 16:55:00 +0000 2016
>Originator: Andreas Gustafsson
>Release: NetBSD 6.1.5, 7.0, and -current
>Organization:
>Environment:
System: NetBSD guava.gson.org 6.1.5 NetBSD 6.1.5 (GENERIC) amd64
Architecture: x86_64
Machine: amd64
>Description:
When I try to scan a document using the "scanimage" program from
version 1.0.25 of the sane-backends package and a Fujitsu ScanSnap
S1500 scanner, my system crashes with a fatal page fault in
ugenclose().
This happens with 6.1.5, 7.0. and -current. The scanimage program
from earlier versions of sane-backends does not trigger the crash.
From the crash dump, I have determined that the crash happens when
ugenclose() dereferences sce->edesc, which is NULL.
The following patch prevents the crash, but it's probably not a
correct and complete fix since there are other places where sce->edesc
is checked for NULL only within "#ifdef DIAGNOSTIC", so presumably
that condition is not supposed to arise in the first place.
Also, it only prevents the crash, it does not make the scan succeed.
Index: ugen.c
===================================================================
RCS file: /bracket/repo/src/sys/dev/usb/ugen.c,v
retrieving revision 1.126
diff -u -r1.126 ugen.c
--- ugen.c 20 Sep 2014 08:45:23 -0000 1.126
+++ ugen.c 9 Feb 2016 19:56:22 -0000
@@ -544,6 +544,12 @@
usbd_close_pipe(sce->pipeh);
sce->pipeh = NULL;
+ if (sce->edesc == NULL) {
+ printf("ugenclose: endpt=%d dir=%d no edesc\n",
+ endpt, dir);
+ continue;
+ }
+
switch (sce->edesc->bmAttributes & UE_XFERTYPE) {
case UE_INTERRUPT:
ndflush(&sce->q, sce->q.c_cc);
>How-To-Repeat:
If you don't happen to have a ScanSnap S1500, you can ask me to run
tests. The problem is 100% reproducible for me.
>Fix:
Home |
Main Index |
Thread Index |
Old Index