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>