Re: [RFC 06/21] xhci: fix derivation of TRB's DMA address in xhci_log_event Trace Event Class

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

 



Applied to for-usb-next for 3.14.

Thanks,
Sarah Sharp

On Mon, Sep 09, 2013 at 09:03:11PM +0300, Xenia Ragiadakou wrote:
> This patch fixes the retrieval of the DMA address of the TRB that generated
> the event by converting the field[0] (low address bits) and field[1] (high
> address bits) to CPU byteorder and then typecasting field[1] to u64 so that
> the bitshift will not lead to overflow.
> In the original code, the typecasting of le32 to u64 was incorrect and the
> subsequent conversion to le64 reverts the low and high address parts.
> This bug was found using sparse.
> 
> Signed-off-by: Xenia Ragiadakou <burzalodowa@xxxxxxxxx>
> ---
>  drivers/usb/host/xhci-trace.h | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/usb/host/xhci-trace.h b/drivers/usb/host/xhci-trace.h
> index c156685..59a0b03 100644
> --- a/drivers/usb/host/xhci-trace.h
> +++ b/drivers/usb/host/xhci-trace.h
> @@ -125,8 +125,8 @@ DECLARE_EVENT_CLASS(xhci_log_event,
>  	),
>  	TP_fast_assign(
>  		__entry->va = trb_va;
> -		__entry->dma = le64_to_cpu(((u64)ev->field[1]) << 32 |
> -						ev->field[0]);
> +		__entry->dma = ((u64)le32_to_cpu(ev->field[1])) << 32 |
> +					le32_to_cpu(ev->field[0]);
>  		__entry->status = le32_to_cpu(ev->field[2]);
>  		__entry->flags = le32_to_cpu(ev->field[3]);
>  		memcpy(__get_dynamic_array(trb), trb_va,
> -- 
> 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