On Mon, Aug 3, 2009 at 16:15, Oliver Neukum<oliver@xxxxxxxxxx> wrote: > Am Montag, 3. August 2009 15:22:34 schrieb Alex Riesen: >> On Mon, Aug 3, 2009 at 15:04, Oliver Neukum<oliver@xxxxxxxxxx> wrote: >> > Am Montag, 3. August 2009 11:17:05 schrieb Alex Riesen: >> >> 466 ep = (usb_pipein(acm->rx_endpoint) ? acm->dev->ep_in : >> >> acm->dev->ep_out) >> >> 467 [usb_pipeendpoint(acm->rx_endpoint)]; >> >> 468 if (usb_endpoint_xfer_int(&ep->desc)) >> >> >> >> So it looks like ep is NULL (usb_endpoint_xfer_int accesses >> >> desc.bmAttributes, which is 3 bytes off the beginning of struct >> >> usb_host_endpoint (desc being the first field in usb_host_endpoint). >> > >> > This tells you that the device has been disconnected. The question >> > is not why this function fails, but why it is called even though the >> > device has been disconnected. >> >> Cool. How can I help? > > You have to put printks in acm_disconnect to find out where it returns > to early or if it is not called at all. > I have hard time guessing exactly where to put them, without knowing what in acm_disconnect modifies the data pointed by ->ep_in and ->ep_out. My late impression was that acm_disconnect _is_ called. I'll try anyway. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html