From: Hans de Goede Date: Thu, 7 Nov 2013 07:19:45 +0000 (+0100) Subject: xhci: xhci_mem_cleanup: make sure cmd_ring_reserved_trbs really is 0 X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=127329d76b8534fb58c207db1f172d8468b828ff;p=openwrt%2Fstaging%2Fblogic.git xhci: xhci_mem_cleanup: make sure cmd_ring_reserved_trbs really is 0 cmd_ring_reserved_trbs gets decremented by xhci_free_stream_info(), so set it to 0 after freeing all rings, otherwise it wraps around to a very large value when rings with streams are free-ed. Before this patch the wrap-around could be triggered when xhci_resume calls xhci_mem_cleanup if the controller resume fails. Signed-off-by: Hans de Goede Signed-off-by: Sarah Sharp --- diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index edfb31ad5949..60fc6720007f 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -1812,7 +1812,6 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci) if (xhci->lpm_command) xhci_free_command(xhci, xhci->lpm_command); - xhci->cmd_ring_reserved_trbs = 0; if (xhci->cmd_ring) xhci_ring_free(xhci, xhci->cmd_ring); xhci->cmd_ring = NULL; @@ -1877,6 +1876,7 @@ void xhci_mem_cleanup(struct xhci_hcd *xhci) } no_bw: + xhci->cmd_ring_reserved_trbs = 0; xhci->num_usb2_ports = 0; xhci->num_usb3_ports = 0; xhci->num_active_eps = 0;