Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 20 Jun 2007 15:58:07 -0600 (MDT)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        cvs-src@yandex.ru
Cc:        freebsd-usb@freebsd.org
Subject:   Re: Panic on post-freeze current with ucom
Message-ID:  <20070620.155807.1219864011.imp@bsdimp.com>
In-Reply-To: <4678D5FA.000001.31958@pantene.yandex.ru>
References:  <46790374.8040903@yandex.ru> <20070620.011451.1021576727.imp@bsdimp.com> <4678D5FA.000001.31958@pantene.yandex.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <4678D5FA.000001.31958@pantene.yandex.ru>
            "R.Mahmatkhanov" <cvs-src@yandex.ru> writes:
: >In message: <46790374.8040903@yandex.ru>
: >            "R.Mahmatkhanov" <cvs-src@yandex.ru> writes:
: >: Good Day.
: >: 
: >: I just move to latest -current/i386 after the code freeze. And i catch
: >: 100% reproduceble panic condition. It happens when i plug my mobile
: >: phone to USB port. How it does:
: >: 
: >: ucom0: <CURITEL Incorporated CURITEL HX-550C USB Modem, class 2/0, rev
: >: 1.10/0.00, addr 2> on uhub1
: >: Fatal trap 12: page fault while in kernel mode cpuid = 0; apic id = 00
: >: fault virtual address = 0x4
: >: fault code = supervisor read, page not present
: >: instruction pointer = 0x20: 0xc06ca396
: >: stack pointer = 0x28: 0xdd30a760
: >: frame pointer = 0x28: 0xdd30a760
: >: code segment = base 0x0, limit 0xfffff, type = 0x1b, DPL 0, pres 1,
: >:              = def32 1, gran 1
: >: processor eflags = interrupt enabled, resume; IOPL = 0
: >: current process = 28 (usb1)
: >: [thread pid 28 tid 100023]
: >: Stopped at usb_get_interface_descruptor+0x6: movl 0x4(%eax), %eax
: >
: >This looks like a null modem dereference.  Which driver is causing
: >this?
: >
: >Warner
: 
: It's umodem.

doh!

Consider applying

Index: umodem.c
===================================================================
RCS file: /cache/ncvs/src/sys/dev/usb/umodem.c,v
retrieving revision 1.67
diff -c -u -r1.67 umodem.c
cvs diff: conflicting specifications of output style
--- umodem.c	20 Jun 2007 05:10:53 -0000	1.67
+++ umodem.c	20 Jun 2007 21:57:17 -0000
@@ -284,9 +284,6 @@
 	int i;
 	struct ucom_softc *ucom;
 
-	id = usbd_get_interface_descriptor(sc->sc_ctl_iface);
-	device_printf(self, "iclass %d/%d", id->bInterfaceClass,
-	  id->bInterfaceSubClass);
 	ucom = &sc->sc_ucom;
 	ucom->sc_dev = self;
 	sc->sc_dev = self;
@@ -296,6 +293,9 @@
 	sc->sc_udev = dev;
 	sc->sc_ctl_iface = uaa->iface;
 	sc->sc_ctl_iface_no = id->bInterfaceNumber;
+	id = usbd_get_interface_descriptor(sc->sc_ctl_iface);
+	device_printf(self, "iclass %d/%d", id->bInterfaceClass,
+	  id->bInterfaceSubClass);
 
 	umodem_get_caps(dev, &sc->sc_cm_cap, &sc->sc_acm_cap);
 

and letting me know the results.

Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070620.155807.1219864011.imp>