Date: Thu, 30 Aug 2007 00:20:12 GMT From: Derrick Brashear <dbrashear@sinenomine.net> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/75710: [cue] cue0 device configuration causes kernel panic Message-ID: <200708300020.l7U0KCwE088920@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/75710; it has been noted by GNATS. From: Derrick Brashear <dbrashear@sinenomine.net> To: bug-followup@FreeBSD.org Cc: Subject: Re: kern/75710: [cue] cue0 device configuration causes kernel panic Date: Wed, 29 Aug 2007 20:18:48 -0400 Still broken (it breaks the network on the machine somehow; an outgoing ping on the machines' other, non-cue interface gets one reply; one dup'd packet, and nothing further, and inbound ssh connects and hangs) but no more crashing. --- ./if_cue.c?rev=1.57.2.3;content-type=text %2Fplain;only_with_tag=RELENG_6_2 Sun Oct 9 03:59:36 2005 +++ /usr/src/sys/dev/usb/if_cue.c Thu Aug 30 01:02:38 2007 @@ -448,10 +450,13 @@ usb_interface_descriptor_t *id; usb_endpoint_descriptor_t *ed; int i; + usbd_interface_handle iface; + usbd_status err; bzero(sc, sizeof(struct cue_softc)); + + sc->cue_dev = self; - sc->cue_iface = uaa->iface; sc->cue_udev = uaa->device; sc->cue_unit = device_get_unit(self); @@ -461,7 +466,16 @@ USB_ATTACH_ERROR_RETURN; } - id = usbd_get_interface_descriptor(uaa->iface); + err = usbd_device2interface_handle(uaa->device, CUE_IFACE_IDX, &iface); + if (err) { + printf("cue%d: getting interface handle failed\n", + sc->cue_unit); + USB_ATTACH_ERROR_RETURN; + } + + sc->cue_iface = iface; + + id = usbd_get_interface_descriptor(sc->cue_iface); usbd_devinfo(uaa->device, 0, devinfo); device_set_desc_copy(self, devinfo); @@ -469,12 +483,12 @@ /* Find endpoints. */ for (i = 0; i < id->bNumEndpoints; i++) { - ed = usbd_interface2endpoint_descriptor(uaa->iface, i); + ed = usbd_interface2endpoint_descriptor(iface, i); if (!ed) { printf("cue%d: couldn't get ep %d\n", sc->cue_unit, i); USB_ATTACH_ERROR_RETURN; - } + } if (UE_GET_DIR(ed->bEndpointAddress) == UE_DIR_IN && UE_GET_XFERTYPE(ed->bmAttributes) == UE_BULK) { sc->cue_ed[CUE_ENDPT_RX] = ed- >bEndpointAddress;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200708300020.l7U0KCwE088920>