RE: [PATCH 1/5] xhci: Use correct SLOT ID when handling a reset device command

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Of Mathias Nyman
> Command completion events normally include command completion status,
> SLOT_ID, and a pointer to the original command. Reset device command
> completion SLOT_ID may be zero according to xhci specs 4.6.11.
> 
> VIA controllers set the SLOT_ID to zero, triggering a WARN_ON in the
> command completion handler.
> 
> Use the SLOT ID found from the original command instead.
> 
> This patch should be applied to stable kernels since 3.13 that contain
> the commit 20e7acb13ff48fbc884d5918c3697c27de63922a
> "xhci: use completion event's slot id rather than dig it out of command"
> 
> Cc: stable@xxxxxxxxxxxxxxx # 3.13
> Reported-by: Saran Neti <sarannmr@xxxxxxxxx>
> Tested-by: Saran Neti <sarannmr@xxxxxxxxx>
> Signed-off-by: Mathias Nyman <mathias.nyman@xxxxxxxxxxxxxxx>
> ---
>  drivers/usb/host/xhci-ring.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
> index d67ff71..71657d3 100644
> --- a/drivers/usb/host/xhci-ring.c
> +++ b/drivers/usb/host/xhci-ring.c
> @@ -1433,8 +1433,11 @@ static void handle_cmd_completion(struct xhci_hcd *xhci,
>  		xhci_handle_cmd_reset_ep(xhci, slot_id, cmd_trb, cmd_comp_code);
>  		break;
>  	case TRB_RESET_DEV:
> -		WARN_ON(slot_id != TRB_TO_SLOT_ID(
> -				le32_to_cpu(cmd_trb->generic.field[3])));
> +		/* SLOT_ID field in reset device cmd completion event TRB is 0.

Minor nit...
Surely is would be better to say 'is undefined' or 'may be zero'.

	David



--
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




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux