aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ehci-q.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/host/ehci-q.c')
-rw-r--r--drivers/usb/host/ehci-q.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
index 08fdcfa..7321920 100644
--- a/drivers/usb/host/ehci-q.c
+++ b/drivers/usb/host/ehci-q.c
@@ -506,6 +506,11 @@ qh_completions (struct ehci_hcd *ehci, struct ehci_qh *qh)
last = list_entry (qtd->qtd_list.prev,
struct ehci_qtd, qtd_list);
last->hw_next = qtd->hw_next;
+ /*
+ * Make sure the new hw_next pointer is visible
+ * to the HW before freeing the old one
+ */
+ wmb();
}
/* remove qtd; it's recycled after possible urb completion */