MINOR: pools: call malloc_trim() under thread isolation

pool_gc() was adjusted to run under thread isolation by commit c0e2ff202
("MEDIUM: memory: make pool_gc() run under thread isolation") so that the
underlying malloc() and free() don't compete between threads during these
potentially aggressive moments (especially when mmap/munmap are involved).

Commit 88366c292 ("MEDIUM: pools: call malloc_trim() from pool_gc()")
later added a call to malloc_trim() but made it outside of the thread
isolation, which is contrary to the principle explained above. Also it
missed it in the locked version, meaning that those without a lockless
implementation cannot benefit from trimming.

This patch fixes that by calling it before thread_release() in both
places.

(cherry picked from commit 26ed183556f3df9e9bde6f6d47143aa4a18ae463)
Signed-off-by: Willy Tarreau <w@1wt.eu>
(cherry picked from commit 46b515ca55b113827ed3e52937cf7ad154d2f6c0)
Signed-off-by: Willy Tarreau <w@1wt.eu>
diff --git a/src/pool.c b/src/pool.c
index 5ea2df0..22522a5 100644
--- a/src/pool.c
+++ b/src/pool.c
@@ -360,12 +360,11 @@
 		}
 	}
 
-	if (!isolated)
-		thread_release();
-
 #if defined(HA_HAVE_MALLOC_TRIM)
 	malloc_trim(0);
 #endif
+	if (!isolated)
+		thread_release();
 }
 
 #else /* CONFIG_HAP_LOCKLESS_POOLS */
@@ -491,6 +490,10 @@
 		}
 	}
 
+#if defined(HA_HAVE_MALLOC_TRIM)
+	malloc_trim(0);
+#endif
+
 	if (!isolated)
 		thread_release();
 }