diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 4f2ef5345392026c7d12e8a24e04376c04acac33..08a5738a6e1bb96f0e0f78888be3e5f639a41071 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -99,6 +99,7 @@ void dwc3_put_device_id(int id)
 
 	ret = test_bit(id, dwc3_devs);
 	WARN(!ret, "dwc3: ID %d not in use\n", id);
+	smp_mb__before_clear_bit();
 	clear_bit(id, dwc3_devs);
 }
 EXPORT_SYMBOL_GPL(dwc3_put_device_id);