summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXenia Ragiadakou <burzalodowa@gmail.com>2013-09-09 21:03:06 +0300
committerSarah Sharp <sarah.a.sharp@linux.intel.com>2013-12-02 12:59:47 -0800
commitef73400ca5d1ad695374988510b9977c41b81f3e (patch)
tree05a3a3a024babf8830f7666a895e70a70ac7d574
parent0d3703be3a671ca225a796f4ae6e904dd83c2e07 (diff)
downloadop-kernel-dev-ef73400ca5d1ad695374988510b9977c41b81f3e.zip
op-kernel-dev-ef73400ca5d1ad695374988510b9977c41b81f3e.tar.gz
xhci: fix incorrect type in assignment in xhci_count_num_new_endpoints()
The fields 'add_flags' and 'drop_flags' in struct xhci_input_control_ctx have type __le32 and need to be converted to CPU byteorder before being used to derive the number of added endpoints. This bug was found using sparse. This patch is not suitable for stable, since the bug would only be triggered on big endian systems, and the code only runs for Intel xHCI host controllers, which are always integrated into little endian systems. 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.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 1798c53..b7289e9 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -1892,8 +1892,8 @@ static u32 xhci_count_num_new_endpoints(struct xhci_hcd *xhci,
* (bit 1). The default control endpoint is added during the Address
* Device command and is never removed until the slot is disabled.
*/
- valid_add_flags = ctrl_ctx->add_flags >> 2;
- valid_drop_flags = ctrl_ctx->drop_flags >> 2;
+ valid_add_flags = le32_to_cpu(ctrl_ctx->add_flags) >> 2;
+ valid_drop_flags = le32_to_cpu(ctrl_ctx->drop_flags) >> 2;
/* Use hweight32 to count the number of ones in the add flags, or
* number of endpoints added. Don't count endpoints that are changed
OpenPOWER on IntegriCloud