Re: [RFC v2] xhci: fix incorrect type in assignment in xhci_address_device()

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

 



Applied to for-usb-linus to be queued for 3.13.  (I changed my mind
about some of the big endian sparse fixes, and marked them to be queued
for the stable tree, so some of your patches have migrated from
for-usb-next-queue to for-usb-linus-queue.)

Sarah Sharp

On Fri, Nov 15, 2013 at 03:18:07AM +0200, Xenia Ragiadakou wrote:
> The field 'dev_info' in struct xhci_slot_ctx has type __le32 and it needs
> to be converted to CPU byteorder for the correct retrieval of its subfield
> 'Context Entries'. This field is used by the trace event 'xhci_address_ctx'
> to trace only the contexts of valid endpoints.
> This bug was found using sparse.
> 
> Signed-off-by: Xenia Ragiadakou <burzalodowa@xxxxxxxxx>
> ---
> 
> Changes from v1:
>   * fix patch to apply cleanly on for-usb-next-queue branch of xhci tree
> 
>  drivers/usb/host/xhci.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
> index 1d26b3f..900ba36 100644
> --- a/drivers/usb/host/xhci.c
> +++ b/drivers/usb/host/xhci.c
> @@ -3771,7 +3771,7 @@ int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev)
>  	xhci_dbg(xhci, "Slot ID %d Input Context:\n", udev->slot_id);
>  	xhci_dbg_ctx(xhci, virt_dev->in_ctx, 2);
>  	trace_xhci_address_ctx(xhci, virt_dev->in_ctx,
> -				slot_ctx->dev_info >> 27);
> +				le32_to_cpu(slot_ctx->dev_info) >> 27);
>  
>  	spin_lock_irqsave(&xhci->lock, flags);
>  	cmd_trb = xhci_find_next_enqueue(xhci->cmd_ring);
> @@ -3850,7 +3850,7 @@ int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev)
>  	xhci_dbg(xhci, "Slot ID %d Input Context:\n", udev->slot_id);
>  	xhci_dbg_ctx(xhci, virt_dev->in_ctx, 2);
>  	trace_xhci_address_ctx(xhci, virt_dev->in_ctx,
> -				slot_ctx->dev_info >> 27);
> +				le32_to_cpu(slot_ctx->dev_info) >> 27);
>  	xhci_dbg(xhci, "Slot ID %d Output Context:\n", udev->slot_id);
>  	xhci_dbg_ctx(xhci, virt_dev->out_ctx, 2);
>  	/*
> @@ -3859,7 +3859,7 @@ int xhci_address_device(struct usb_hcd *hcd, struct usb_device *udev)
>  	 */
>  	slot_ctx = xhci_get_slot_ctx(xhci, virt_dev->out_ctx);
>  	trace_xhci_address_ctx(xhci, virt_dev->out_ctx,
> -				slot_ctx->dev_info >> 27);
> +				le32_to_cpu(slot_ctx->dev_info) >> 27);
>  	/* Zero the input context control for later use */
>  	ctrl_ctx->add_flags = 0;
>  	ctrl_ctx->drop_flags = 0;
> -- 
> 1.8.3.4
> 
--
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