On Tue, Mar 22, 2011 at 11:42:17AM +0100, Oliver Neukum wrote: > Am Dienstag, 22. März 2011, 11:12:24 schrieb Johan Hovold: > > +static void acm_read_bulk_callback(struct urb *urb) > > +{ > > + struct acm_rb *rb = urb->context; > > + struct acm *acm = rb->instance; > > + unsigned long flags; > > > > - buf = list_entry(acm->spare_read_bufs.next, > > - struct acm_rb, list); > > - list_del(&buf->list); > > + dev_vdbg(&acm->data->dev, "%s - urb %d, len %d\n", __func__, > > + rb->index, urb->actual_length); > > + set_bit(rb->index, &acm->read_urbs_free); > > You are marking the URB as free before it is processed. This is not an issue, as the urb in question will only be submitted from the same interrupt handler a bit later on (i.e. there's a one-one relation here). The only other place urbs get submitted from are from soft context in unthrottle (after open). Thanks, Johan -- 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