summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXenia Ragiadakou <burzalodowa@gmail.com>2013-09-09 21:03:11 +0300
committerSarah Sharp <sarah.a.sharp@linux.intel.com>2013-12-02 12:59:45 -0800
commitf00466963817c8a240f022af864cdc39d482cdb7 (patch)
treec1a773add5db056c53e5d7e882faf7856d3d8f20
parent7e76ad431545d013911ddc744843118b43d01e89 (diff)
downloadlinux-f00466963817c8a240f022af864cdc39d482cdb7.tar.bz2
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: Xenia Ragiadakou <burzalodowa@gmail.com> Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
-rw-r--r--drivers/usb/host/xhci-trace.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/usb/host/xhci-trace.h b/drivers/usb/host/xhci-trace.h
index 20364cc8d2fb..afe093340834 100644
--- a/drivers/usb/host/xhci-trace.h
+++ b/drivers/usb/host/xhci-trace.h
@@ -120,8 +120,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,