File malloc-Consistently-apply-trim_threshold-to-all-heap.patch of Package glibc.8004

2015-10-07  Carlos O'Donell  <carlos@redhat.com>

	[BZ #17195]
	* malloc/arena.c (heap_trim): Apply trim_treshold to top_chunck size,
	as is similarly done in systrim and _int_free already.

Index: glibc-2.19/malloc/arena.c
===================================================================
--- glibc-2.19.orig/malloc/arena.c
+++ glibc-2.19/malloc/arena.c
@@ -712,14 +712,20 @@ heap_trim (heap_info *heap, size_t pad)
     }
 
   /* Uses similar logic for per-thread arenas as the main arena with systrim
-     by preserving the top pad and at least a page.  */
+     and _int_free by preserving the top pad and rounding down to the nearest
+     page.  */
   top_size = chunksize (top_chunk);
+  if ((unsigned long)(top_size) <
+      (unsigned long)(mp_.trim_threshold))
+    return 0;
+
   top_area = top_size - MINSIZE - 1;
   if (top_area < 0 || (size_t) top_area <= pad)
     return 0;
 
+  /* Release in pagesize units and round down to the nearest page.  */
   extra = ALIGN_DOWN(top_area - pad, pagesz);
-  if ((unsigned long) extra < mp_.trim_threshold)
+  if (extra == 0)
     return 0;
 
   /* Try to shrink. */
openSUSE Build Service is sponsored by