glibc/malloc
Carlos O'Donell ca6be1655b Use ALIGN_DOWN in systrim.
While doing code review I converted another bespoke round down, and
corrected a comment.

The comment spoke about keeping at least one page allocated even
during systrim, which is not correct. The code does nothing to keep
a page allocated. The code does attempt to keep PAD padding as
documented in comments and MINSIZE as required by design.

Historically in 2002 when Ulrich wrote the code (fa8d436c) the math
was inlined into one statement which did reserve an extra page:
extra = ((top_size - pad - MINSIZE + (pagesz-1)) / pagesz - 1) * pagesz;
There is no reason given for this extra page.

In 2010 Anton Branchard's change (b9b42ee0) from division
to shifts removed the extra page by dropping the "+ (pagesiz-1), which
mean we might have attempted to return -0 via MORECORE. The fix by Will
Newton in 2014 added a check for extra being zero (51a7380b).

From first principles I see no reason why we should keep an extra
page of memory from being trimmed back to the OS. The only sensible
interface is to honour PAD padding as the function is documented,
with the caveat the MINSIZE is maintained for the top chunk.

Given that we've been using this code for 5+ years with no extra
page allocated is sufficient evidence that the comment should be changed
to match the code that I'm touching.

Tested on x86_64 and i686, no regressions.
2015-09-14 15:32:47 -04:00
..
arena.c Don't use the main arena in retry path if it is corrupt 2015-08-24 14:33:07 +05:30
Depend
hooks.c Fix for test "malloc_usable_size: expected 7 but got 11" 2015-05-19 12:10:26 -07:00
Makefile Avoid deadlock in malloc on backtrace (BZ #16159) 2015-05-19 06:40:38 +05:30
malloc.c Use ALIGN_DOWN in systrim. 2015-09-14 15:32:47 -04:00
malloc.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mallocbug.c Reformat malloc to gnu style. 2014-01-02 09:40:10 +01:00
mcheck-init.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mcheck.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mcheck.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memusage.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memusage.sh Update copyright dates not handled by scripts/update-copyrights. 2015-01-02 16:54:45 +00:00
memusagestat.c Update copyright dates not handled by scripts/update-copyrights. 2015-01-02 16:54:45 +00:00
morecore.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mtrace.c Move bits/libc-lock.h and bits/libc-lockP.h out of bits/ (bug 14912). 2015-09-08 21:11:03 +00:00
mtrace.pl Filter out NULL entries. 2015-09-01 08:35:38 -07:00
obstack.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
obstack.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
scratch_buffer_grow_preserve.c scratch_buffer_grow_preserve: Add missing #include <string.h> 2015-04-07 17:46:58 +02:00
scratch_buffer_grow.c Add struct scratch_buffer and its internal helper functions 2015-04-07 11:03:43 +02:00
scratch_buffer_set_array_size.c Add struct scratch_buffer and its internal helper functions 2015-04-07 11:03:43 +02:00
set-freeres.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
thread-freeres.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-calloc.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-malloc-backtrace.c Avoid outputting to TTY after an expected memory corruption in testcase 2015-06-05 09:39:49 -03:00
tst-malloc-usable.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-malloc.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-mallocfork.c
tst-mallocstate.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-mallopt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-mcheck.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-memalign.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-mtrace.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-mtrace.sh Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-obstack.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-posix_memalign.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-pvalloc.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-realloc.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-scratch_buffer.c scratch_buffer: Suppress truncation warning on 32-bit 2015-04-09 17:12:42 +02:00
tst-trim1.c
tst-valloc.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Versions Add struct scratch_buffer and its internal helper functions 2015-04-07 11:03:43 +02:00