diff options
Diffstat (limited to 'drivers/usb/host/xhci-ring.c')
| -rw-r--r-- | drivers/usb/host/xhci-ring.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index b90e1386418..b62037bff68 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -1204,6 +1204,7 @@ static void handle_vendor_event(struct xhci_hcd *xhci,   *   * Returns a zero-based port number, which is suitable for indexing into each of   * the split roothubs' port arrays and bus state arrays. + * Add one to it in order to call xhci_find_slot_id_by_port.   */  static unsigned int find_faked_portnum_from_hw_portnum(struct usb_hcd *hcd,  		struct xhci_hcd *xhci, u32 port_id) @@ -1324,7 +1325,7 @@ static void handle_port_status(struct xhci_hcd *xhci,  			xhci_set_link_state(xhci, port_array, faked_port_index,  						XDEV_U0);  			slot_id = xhci_find_slot_id_by_port(hcd, xhci, -					faked_port_index); +					faked_port_index + 1);  			if (!slot_id) {  				xhci_dbg(xhci, "slot_id is zero\n");  				goto cleanup; @@ -3323,7 +3324,8 @@ static int xhci_queue_isoc_tx(struct xhci_hcd *xhci, gfp_t mem_flags,  		/* Check TD length */  		if (running_total != td_len) {  			xhci_err(xhci, "ISOC TD length unmatch\n"); -			return -EINVAL; +			ret = -EINVAL; +			goto cleanup;  		}  	}  |