From owner-freebsd-bugs@FreeBSD.ORG Thu Aug 30 00:20:12 2007 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7B0D516A417 for ; Thu, 30 Aug 2007 00:20:12 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 496ED13C480 for ; Thu, 30 Aug 2007 00:20:12 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.1/8.14.1) with ESMTP id l7U0KCrP088921 for ; Thu, 30 Aug 2007 00:20:12 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.1/8.14.1/Submit) id l7U0KCwE088920; Thu, 30 Aug 2007 00:20:12 GMT (envelope-from gnats) Date: Thu, 30 Aug 2007 00:20:12 GMT Message-Id: <200708300020.l7U0KCwE088920@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: Derrick Brashear Cc: Subject: Re: kern/75710: [cue] cue0 device configuration causes kernel panic X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Derrick Brashear List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Aug 2007 00:20:12 -0000 The following reply was made to PR kern/75710; it has been noted by GNATS. From: Derrick Brashear 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;