diff --git a/src/core/lib/support/mpscq.c b/src/core/lib/support/mpscq.c
index cdd6335f82b2f9dae5137e097809adceafe5bc40..5b9323275aa49825b7858e78167ab0180b89f512 100644
--- a/src/core/lib/support/mpscq.c
+++ b/src/core/lib/support/mpscq.c
@@ -50,7 +50,7 @@ void gpr_mpscq_push(gpr_mpscq *q, gpr_mpscq_node *n) {
   gpr_atm_no_barrier_store(&n->next, (gpr_atm)NULL);
   gpr_mpscq_node *prev =
       (gpr_mpscq_node *)gpr_atm_full_xchg(&q->head, (gpr_atm)n);
-  gpr_atm_no_barrier_store(&prev->next, (gpr_atm)n);
+  gpr_atm_rel_store(&prev->next, (gpr_atm)n);
 }
 
 gpr_mpscq_node *gpr_mpscq_pop(gpr_mpscq *q) {