Commit f0046696 authored by Xenia Ragiadakou's avatar Xenia Ragiadakou Committed by Sarah Sharp

xhci: fix derivation of TRB's DMA address in xhci_log_event Trace Event Class

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: default avatarXenia Ragiadakou <burzalodowa@gmail.com>
Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
parent 7e76ad43
...@@ -120,8 +120,8 @@ DECLARE_EVENT_CLASS(xhci_log_event, ...@@ -120,8 +120,8 @@ DECLARE_EVENT_CLASS(xhci_log_event,
), ),
TP_fast_assign( TP_fast_assign(
__entry->va = trb_va; __entry->va = trb_va;
__entry->dma = le64_to_cpu(((u64)ev->field[1]) << 32 | __entry->dma = ((u64)le32_to_cpu(ev->field[1])) << 32 |
ev->field[0]); le32_to_cpu(ev->field[0]);
__entry->status = le32_to_cpu(ev->field[2]); __entry->status = le32_to_cpu(ev->field[2]);
__entry->flags = le32_to_cpu(ev->field[3]); __entry->flags = le32_to_cpu(ev->field[3]);
memcpy(__get_dynamic_array(trb), trb_va, memcpy(__get_dynamic_array(trb), trb_va,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment