1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

Fix BZ #15089: malloc_trim always trim for large padding.

This commit is contained in:
Fernando J. V. da Silva
2013-12-06 18:04:10 +01:00
committed by Ondřej Bílka
parent 0a3ac0aabf
commit 4b5b548c9f
3 changed files with 51 additions and 44 deletions

View File

@ -1,3 +1,8 @@
2013-12-06 Fernando J. V. da Silva <fernandojvdasilva@gmail.com>
[BZ #15089]
* malloc/malloc.c: Exit systrim() if pad is bigger than heap top size.
2013-12-06 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
* NEWS: Mention ppc32/power4+ STT_GNU_IFUNC support.

20
NEWS
View File

@ -12,16 +12,16 @@ Version 2.19
156, 387, 431, 832, 926, 2801, 4772, 6786, 6787, 6807, 6810, 7003, 9954,
10253, 10278, 11087, 11157, 11214, 12486, 13028, 13982, 13985, 14029,
14032, 14143, 14155, 14547, 14699, 14752, 14876, 14910, 15004, 15048,
15218, 15268, 15277, 15308, 15362, 15374, 15400, 15425, 15427, 15483,
15522, 15531, 15532, 15601, 15608, 15609, 15610, 15632, 15640, 15670,
15672, 15680, 15681, 15723, 15734, 15735, 15736, 15748, 15749, 15754,
15760, 15763, 15764, 15797, 15799, 15825, 15844, 15847, 15849, 15855,
15856, 15857, 15859, 15867, 15886, 15887, 15890, 15892, 15893, 15895,
15897, 15901, 15905, 15909, 15915, 15917, 15919, 15921, 15923, 15939,
15941, 15948, 15963, 15966, 15985, 15988, 15997, 16032, 16034, 16036,
16037, 16038, 16041, 16055, 16071, 16072, 16074, 16077, 16078, 16103,
16112, 16143, 16144, 16146, 16150, 16151, 16153, 16167, 16172, 16195,
16214, 16245, 16271, 16274, 16283, 16289.
15089, 15218, 15268, 15277, 15308, 15362, 15374, 15400, 15425, 15427,
15483, 15522, 15531, 15532, 15601, 15608, 15609, 15610, 15632, 15640,
15670, 15672, 15680, 15681, 15723, 15734, 15735, 15736, 15748, 15749,
15754, 15760, 15763, 15764, 15797, 15799, 15825, 15844, 15847, 15849,
15855, 15856, 15857, 15859, 15867, 15886, 15887, 15890, 15892, 15893,
15895, 15897, 15901, 15905, 15909, 15915, 15917, 15919, 15921, 15923,
15939, 15941, 15948, 15963, 15966, 15985, 15988, 15997, 16032, 16034,
16036, 16037, 16038, 16041, 16055, 16071, 16072, 16074, 16077, 16078,
16103, 16112, 16143, 16144, 16146, 16150, 16151, 16153, 16167, 16172,
16195, 16214, 16245, 16271, 16274, 16283, 16289.
* The public headers no longer use __unused nor __block. This change is to
support compiling programs that are derived from BSD sources and use

View File

@ -2709,14 +2709,17 @@ static int systrim(size_t pad, mstate av)
char* current_brk; /* address returned by pre-check sbrk call */
char* new_brk; /* address returned by post-check sbrk call */
size_t pagesz;
long top_area;
pagesz = GLRO(dl_pagesize);
top_size = chunksize(av->top);
/* Release in pagesize units, keeping at least one page */
extra = (top_size - pad - MINSIZE - 1) & ~(pagesz - 1);
top_area = top_size - MINSIZE - 1;
if (top_area <= pad)
return 0;
if (extra > 0) {
/* Release in pagesize units, keeping at least one page */
extra = (top_area - pad) & ~(pagesz - 1);
/*
Only proceed if end of memory is where we last set it.
@ -2756,7 +2759,6 @@ static int systrim(size_t pad, mstate av)
}
}
}
}
return 0;
}