diff --git a/rts/sm/GC.c b/rts/sm/GC.c
index 526c84f41130a85c0e4696b0850bd6b8bd672826..93a1bbecf1d3e46bb9c8bb8510494a1f5ab84f00 100644
--- a/rts/sm/GC.c
+++ b/rts/sm/GC.c
@@ -730,11 +730,13 @@ GarbageCollect (uint32_t collect_gen,
     }
   } // for all generations
 
-  // Flush the update remembered set. See Note [Eager update remembered set
+  // Flush the update remembered sets. See Note [Eager update remembered set
   // flushing] in NonMovingMark.c
   if (RtsFlags.GcFlags.useNonmoving) {
       RELEASE_SM_LOCK;
-      nonmovingAddUpdRemSetBlocks(&gct->cap->upd_rem_set.queue);
+      for (n = 0; n < n_capabilities; n++) {
+          nonmovingAddUpdRemSetBlocks(&capabilities[n]->upd_rem_set.queue);
+      }
       ACQUIRE_SM_LOCK;
   }