File tree Expand file tree Collapse file tree 2 files changed +7
-2
lines changed Expand file tree Collapse file tree 2 files changed +7
-2
lines changed Original file line number Diff line number Diff line change @@ -2923,7 +2923,7 @@ pci_xhci_handle_transfer(struct pci_xhci_vdev *xdev,
2923
2923
trb -> dwTrb2 & 0x1FFFF , (void * )addr ,
2924
2924
ccs );
2925
2925
2926
- if (trb -> dwTrb3 & XHCI_TRB_3_CHAIN_BIT )
2926
+ if (xfer_block && ( trb -> dwTrb3 & XHCI_TRB_3_CHAIN_BIT ) )
2927
2927
xfer_block -> chained = 1 ;
2928
2928
break ;
2929
2929
Original file line number Diff line number Diff line change @@ -181,6 +181,10 @@ usb_dev_comp_cb(struct libusb_transfer *trn)
181
181
182
182
/* async request */
183
183
r = trn -> user_data ;
184
+ if (!r ) {
185
+ UPRINTF (LFTL , "error: user context data not found on USB transfer\r\n" );
186
+ goto free_transfer ;
187
+ }
184
188
info = & r -> udev -> info ;
185
189
186
190
/* async transfer */
@@ -311,13 +315,14 @@ usb_dev_comp_cb(struct libusb_transfer *trn)
311
315
cancel_out :
312
316
/* unlock and release memory */
313
317
g_ctx .unlock_ep_cb (xfer -> dev , & xfer -> epid );
314
- libusb_free_transfer (trn );
315
318
316
319
if (r && r -> buffer )
317
320
free (r -> buffer );
318
321
319
322
xfer -> requests [r -> blk_start ] = NULL ;
320
323
free (r );
324
+ free_transfer :
325
+ libusb_free_transfer (trn );
321
326
}
322
327
323
328
static struct usb_dev_req *
You can’t perform that action at this time.
0 commit comments