diff --git a/exercises/src/gpu/grayscott.comp b/exercises/src/gpu/grayscott.comp
index 6ae5c0339772153904c134b44a5391eadad284d9..3733e207e1cb38b11fd4d5eec57fe3211bfec0bf 100644
--- a/exercises/src/gpu/grayscott.comp
+++ b/exercises/src/gpu/grayscott.comp
@@ -320,8 +320,8 @@ void run_simulation() {
         #endif
     }
 
-    // Liberate any acquired tile
-    if (s_acquired_tile && is_leader()) {
+    // Liberate any acquired tile that was dropped due to an early exit
+    if (is_leader() && s_acquired_tile && work_group_finished()) {
         leader_release_tile();
         #if DEBUG || PROFILE
             atomicAdd(g_metadata.final_release, 1);