diff --git a/compute/zgels_param.c b/compute/zgels_param.c
index a05519404d59edc504d0bdafcb3b61c786cca768..5619b004a8cb233b87e1bb877440b836f621e1f9 100644
--- a/compute/zgels_param.c
+++ b/compute/zgels_param.c
@@ -424,9 +424,9 @@ int MORSE_zgels_param_Tile_Async( const libhqr_tree_t *qrtree, MORSE_enum trans,
 
     if (Dptr != NULL) {
         MORSE_Desc_Flush( A, sequence );
+        MORSE_Desc_Flush( B, sequence );
         MORSE_Desc_Flush( TS, sequence );
         MORSE_Desc_Flush( TT, sequence );
-        MORSE_Desc_Flush( B, sequence );
         MORSE_Desc_Flush( Dptr, sequence );
         morse_sequence_wait( morse, sequence );
         morse_desc_mat_free( Dptr );
diff --git a/compute/zgeqrs.c b/compute/zgeqrs.c
index 9f71621df5defb5ae8069a4bca4e8a1abd310f95..d8de43c6ebff5b2c2974ca2e9c2babc10cd60d89 100644
--- a/compute/zgeqrs.c
+++ b/compute/zgeqrs.c
@@ -333,6 +333,11 @@ int MORSE_zgeqrs_Tile_Async( MORSE_desc_t *A, MORSE_desc_t *T, MORSE_desc_t *B,
     free(subB);
 
     if (Dptr != NULL) {
+        MORSE_Desc_Flush( A, sequence );
+        MORSE_Desc_Flush( B, sequence );
+        MORSE_Desc_Flush( T, sequence );
+        MORSE_Desc_Flush( Dptr, sequence );
+        morse_sequence_wait( morse, sequence );
         morse_desc_mat_free( Dptr );
     }
     (void)D;
diff --git a/compute/zgeqrs_param.c b/compute/zgeqrs_param.c
index d762274891d415c932530ea0eb372eb4519e7f4c..cd7f17b6b5ec4601db4ac7457bea27eca6f8fb80 100644
--- a/compute/zgeqrs_param.c
+++ b/compute/zgeqrs_param.c
@@ -332,9 +332,9 @@ int MORSE_zgeqrs_param_Tile_Async( const libhqr_tree_t *qrtree,
 
     if (Dptr != NULL) {
         MORSE_Desc_Flush( A, sequence );
+        MORSE_Desc_Flush( B, sequence );
         MORSE_Desc_Flush( TS, sequence );
         MORSE_Desc_Flush( TT, sequence );
-        MORSE_Desc_Flush( B, sequence );
         MORSE_Desc_Flush( Dptr, sequence );
         morse_sequence_wait( morse, sequence );
         morse_desc_mat_free( Dptr );