Date: Mon, 25 Jun 2007 13:15:36 +0300 From: Niki Denev <nike_d@cytexbg.com> To: freebsd-current@freebsd.org Cc: "M. Warner Losh" <imp@bsdimp.com>, hselasky@c2i.net Subject: Re: panic when removing pccard Message-ID: <467F95C8.7070707@cytexbg.com> In-Reply-To: <467F7A69.9000909@cytexbg.com> References: <46779C8C.8000707@cytexbg.com> <200706191113.03925.hselasky@c2i.net> <4677BD25.8030202@cytexbg.com> <20070623.212128.323264592.imp@bsdimp.com> <467F7A69.9000909@cytexbg.com>
next in thread | previous in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Niki Denev wrote: > M. Warner Losh wrote: >> I've done some testing with the recently improved in-tree usb stack, >> and it doesn't panic for me when I remove a CardBus USB card, both >> with and without devices. It also does remove the extra /dev/usb* >> entries properly. I couldn't cause any crashes with the latest >> -current. > >> Warner > > Unfortunately it still does panic for me by simply inserting the card > (Huawei E630 3g card a.k.a Vodafone Mobile Connect), waiting for the > usb busses to be added and the ucom0 device to be recognized ( it takes > a few seconds) and then ejecting the card. > Again the message is : > > ucom0: detached > (null): at uhub2 port 1 (addr 2) disconnected > > Fatal trap 12: page fault while in kernel mode > fault virtual address = 0x400 > fault code = supervisor read, page not presend > instruction pointer = 0x20:0xc0595b2d > stack pointer = 0x28:0xd2f4db34 > frame pointer = 0x28:0xd2f4db5c > 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 (cbb0 event thread) > trap number = 12 > panic: page fault > > This problem does not exist if i compile my kernel with the HPS Usb Stack. > > I temporarily "fixed" the problem here with this leaking resources : - --- usb_subr.c Mon Jun 25 13:09:12 2007 +++ usb_subr.c.ugly Mon Jun 25 13:03:42 2007 @@ -11,7 +11,7 @@ */ #include <sys/cdefs.h> - -__FBSDID("$FreeBSD: /repoman/r/ncvs/src/sys/dev/usb/usb_subr.c,v 1.94 2007/06/20 05:10:54 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/usb/usb_subr.c,v 1.94 2007/06/20 05:10:54 imp Exp $"); /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -1354,6 +1354,10 @@ if (dev->subdevs != NULL) { DPRINTFN(3,("usb_disconnect_port: disconnect ubdevs\n")); for (i = 0; dev->subdevs[i]; i++) { + if (device_get_nameunit(dev->subdevs[i]) == NULL) { + printf("usb_disconnect_port: no subdevice, leaking\n"); + return; + } printf("%s: at %s", device_get_nameunit(dev->subdevs[i]), hubname); if (up->portno != 0) With this my system survives several card insert/removals only to panic after this with ohci_rem_ed: no ED found :) -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (FreeBSD) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFGf5XHHNAJ/fLbfrkRAsgRAJ9WTqocfJzHrH+qBBV0H/d6qIyvUQCfaxT/ WE/U0hGPpSBeHcbPR7GdFTo= =cW/3 -----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?467F95C8.7070707>