Index: sys/dev/usb/usbdi.c =================================================================== RCS file: /cvsroot/src/sys/dev/usb/usbdi.c,v retrieving revision 1.198 diff -u -p -r1.198 usbdi.c --- sys/dev/usb/usbdi.c 14 Mar 2020 02:35:33 -0000 1.198 +++ sys/dev/usb/usbdi.c 3 Apr 2020 06:00:44 -0000 @@ -593,6 +593,11 @@ usbd_create_xfer(struct usbd_pipe *pipe, if (xfer == NULL) return ENOMEM; + xfer->ux_pipe = pipe; + xfer->ux_flags = flags; + xfer->ux_nframes = nframes; + xfer->ux_methods = pipe->up_methods; + if (len) { buf = usbd_alloc_buffer(xfer, len); if (!buf) { @@ -600,16 +605,10 @@ usbd_create_xfer(struct usbd_pipe *pipe, return ENOMEM; } } - xfer->ux_pipe = pipe; - xfer->ux_flags = flags; - xfer->ux_nframes = nframes; - xfer->ux_methods = pipe->up_methods; if (xfer->ux_methods->upm_init) { int err = xfer->ux_methods->upm_init(xfer); if (err) { - if (buf) - usbd_free_buffer(xfer); usbd_free_xfer(xfer); return err; }