Commit Graph

589 Commits

Author SHA1 Message Date
Maxim Kuvyrkov
362b47fe09 Fix race in free() of fastbin chunk: BZ #15073
Perform sanity check only if we have_lock.  Due to lockless nature of fastbins
we need to be careful derefencing pointers to fastbin entries (chunksize(old)
in this case) in multithreaded environments.

The fix is to add have_lock to the if-condition checks.  The rest of the patch
only makes code more readable.

	* malloc/malloc.c (_int_free): Perform sanity check only if we
	have_lock.
2013-12-24 09:44:50 +13:00
Ondřej Bílka
0dfa665cc1 Expand MALLOC_COPY and MALLOC_ZERO to memcpy and memset. 2013-12-10 19:36:28 +01:00
Ondřej Bílka
5782a80f9f Drop PER_THREAD conditionals from malloc. 2013-12-10 18:00:14 +01:00
Ondřej Bílka
e8349efd46 Simplify perturb_byte logic. 2013-12-09 17:25:19 +01:00
Ondřej Bílka
f3eeb3fc56 Replace malloc force_reg by atomic_forced_read. 2013-12-09 17:14:12 +01:00
Fernando J. V. da Silva
4b5b548c9f Fix BZ #15089: malloc_trim always trim for large padding. 2013-12-06 18:06:56 +01:00
Ondřej Bílka
897b98ba4d Make memset in calloc a tail call. 2013-11-28 12:05:50 +01:00
Roland McGrath
070906ffd3 Add missing #include for malloc/hooks.c code. 2013-11-21 15:49:50 -08:00
Meador Inge
84ae135d32 Use __glibc_block in public headers.
As detailed in PR11157, the use of '__block' is known to interfere
with keywords in some environments, such as the Clang -fblocks extension.
Recently a similar issue was raised concerning the use of '__unused'
and a '__glibc' prefix was proposed to create a glibc implementation
namespace for these sorts of issues [1].  This patches takes that
approach.

[1] https://sourceware.org/ml/libc-alpha/2012-02/msg00047.html
[2] http://lists.debian.org/debian-glibc/2013/11/msg00020.html
2013-11-21 16:57:37 -05:00
Ondřej Bílka
10ad46bc65 Consolidate valloc/pvalloc code.
To make malloc code more maintainable we make malloc and pvalloc share
logic with memalign.
2013-11-20 15:46:02 +01:00
Ondřej Bílka
8b35e35d0f Fix malloc_info statistic. Fixes bug 16112 2013-11-01 15:39:26 +01:00
Will Newton
a56ee40b17 malloc: Fix for infinite loop in memalign/posix_memalign.
A very large alignment argument passed to mealign/posix_memalign
causes _int_memalign to enter an infinite loop. Limit the maximum
alignment value to the maximum representable power of two to
prevent this from happening.

Changelog:

2013-10-30  Will Newton  <will.newton@linaro.org>

	[BZ #16038]
	* malloc/hooks.c (memalign_check): Limit alignment to the
	maximum representable power of two.
	* malloc/malloc.c (__libc_memalign): Likewise.
	* malloc/tst-memalign.c (do_test): Add test for very
	large alignment values.
	* malloc/tst-posix_memalign.c (do_test): Likewise.
2013-10-30 14:46:02 -07:00
Ondřej Bílka
c6e4925d40 Use atomic operations to track memory. Fixes bug 11087 2013-10-30 16:25:21 +01:00
Mike Frysinger
cb8a6dbd17 rename configure.in to configure.ac
Autoconf has been deprecating configure.in for quite a long time.
Rename all our configure.in and preconfigure.in files to .ac.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2013-10-30 17:32:08 +10:00
Ondřej Bílka
0bfcf2c73c Remove assert in malloc statistic. Fixes bug 12486. 2013-10-18 09:35:15 +02:00
Will Newton
321e268471 malloc/hooks.c: Correct check for overflow in memalign_check.
A large value of bytes passed to memalign_check can cause an integer
overflow in _int_memalign and heap corruption. This issue can be
exposed by running tst-memalign with MALLOC_CHECK_=3.

ChangeLog:

2013-10-10  Will Newton  <will.newton@linaro.org>

	* malloc/hooks.c (memalign_check): Ensure the value of bytes
	passed to _int_memalign does not overflow.
2013-10-10 14:52:05 +01:00
Will Newton
66a9be9d58 malloc/tst-valloc.c: Tidy up code.
Add some comments and call free on all potentially allocated pointers.
Also remove duplicate check for NULL pointer.

ChangeLog:

2013-10-04  Will Newton  <will.newton@linaro.org>

	* malloc/tst-valloc.c: Add comments.
	(do_test): Add comments and call free on all potentially
	allocated pointers. Remove duplicate check for NULL pointer.
	Add space after cast.
2013-10-04 09:16:41 +01:00
Will Newton
1bc92709f3 malloc/tst-pvalloc.c: Tidy up code.
Add some comments and call free on all potentially allocated pointers.
Also remove duplicate check for NULL pointer.

ChangeLog:

2013-10-04  Will Newton  <will.newton@linaro.org>

	* malloc/tst-pvalloc.c: Add comments.
	(do_test): Add comments and call free on all potentially
	allocated pointers. Remove duplicate check for NULL pointer.
	Add space after cast.
2013-10-04 09:15:33 +01:00
Will Newton
27d0461b7b malloc/tst-posix_memalign.c: Tidy up code.
Add some comments and call free on all potentially allocated pointers.

ChangeLog:

2013-10-04  Will Newton  <will.newton@linaro.org>

	* malloc/tst-posix_memalign.c: Add comments.
	(do_test): Add comments and call free on all potentially
	allocated pointers. Add space after cast.
2013-10-04 09:14:27 +01:00
Will Newton
215c7d4344 malloc: Add memalign test.
ChangeLog:

2013-10-04  Will Newton  <will.newton@linaro.org>

    * malloc/Makefile: Add tst-memalign.
    * malloc/tst-memalign.c: New file.
2013-10-04 09:12:59 +01:00
Will Newton
3cef60098c malloc: Add pvalloc test.
ChangeLog:

2013-10-02  Will Newton  <will.newton@linaro.org>

	* malloc/Makefile: Add tst-pvalloc.
	* malloc/tst-pvalloc.c: New file.
2013-10-02 10:45:40 +01:00
Will Newton
7815420bc9 malloc/tst-valloc.c: Improve test coverage and use test-skeleton.c.
ChangeLog:

2013-10-02  Will Newton  <will.newton@linaro.org>

	* malloc/tst-valloc.c: Rewrite to use test-skeleton.c and
	improve test coverage.
2013-10-02 10:43:40 +01:00
Will Newton
4868b204aa malloc: Add posix_memalign test.
ChangeLog:

2013-10-02  Will Newton  <will.newton@linaro.org>

	* malloc/Makefile: Add tst-posix_memalign.
	* malloc/tst-posix_memalign.c: New file.
2013-10-02 10:42:36 +01:00
Alexandre Oliva
322dea0838 Add malloc probes for sbrk and heap resizing.
for ChangeLog

	* malloc/arena.c (new_heap): New memory_heap_new probe.
	(grow_heap): New memory_heap_more probe.
	(shrink_heap): New memory_heap_less probe.
	(heap_trim): New memory_heap_free probe.
	* malloc/malloc.c (sysmalloc): New memory_sbrk_more probe.
	(systrim): New memory_sbrk_less probe.
	* manual/probes.texi: Document them.
2013-09-20 11:54:58 -03:00
Alexandre Oliva
655673f312 Add catch-all alloc retry probe.
for ChangeLog

	* malloc/arena.c (arena_get_retry): Add memory_arena_retry probe.
	* manual/probes.texi: Document it.
2013-09-20 11:50:51 -03:00
Alexandre Oliva
35fed6f15d Add probes for malloc retries.
for ChangeLog

	* malloc/malloc.c (__libc_malloc): Add memory_malloc_retry probe.
	(__libc_realloc): Add memory_realloc_retry probe.
	(__libc_memalign): Add memory_memalign_retry probe.
	(__libc_valloc): Add memory_valloc_retry probe.
	(__libc_pvalloc): Add memory_pvalloc_retry probe.
	(__libc_calloc): Add memory_calloc_retry probe.
	* manual/probes.texi: Document them.
2013-09-20 11:50:08 -03:00
Alexandre Oliva
6999d38c95 Add probes for malloc arena changes.
for ChangeLog

	* malloc/arena.c (get_free_list): Add probe
	memory_arena_reuse_free_list.
	(reused_arena) [PER_THREAD]: Add probes memory_arena_reuse_wait
	and memory_arena_reuse.
	(arena_get2) [!PER_THREAD]: Likewise.
	* malloc/malloc.c (__libc_realloc) [!PER_THREAD]: Add probe
	memory_arena_reuse_realloc.
	* manual/probes.texi: Document them.
2013-09-20 11:48:45 -03:00
Alexandre Oliva
0653427fdb Add probes for all changes to malloc options.
for ChangeLog

	* malloc/malloc.c (__libc_free): Add
	memory_mallopt_free_dyn_thresholds probe.
	(__libc_mallopt): Add multiple memory_mallopt probes.
	* manual/probes.texi: Document them.
2013-09-20 11:42:28 -03:00
Alexandre Oliva
3ea5be5436 Add first set of memory probes.
for ChangeLog

	* malloc/malloc.c: Include stap-probe.h.
	(__libc_mallopt): Add memory_mallopt probe.
	* malloc/arena.c (_int_new_arena): Add memory_arena_new probe.
	* manual/probes.texi: New.
	* manual/Makefile (chapters): Add probes.
	* manual/threads.texi: Set next node.
2013-09-20 11:10:54 -03:00
Will Newton
b73ed24778 malloc: Check for integer overflow in memalign.
A large bytes parameter to memalign could cause an integer overflow
and corrupt allocator internals. Check the overflow does not occur
before continuing with the allocation.

ChangeLog:

2013-09-11  Will Newton  <will.newton@linaro.org>

	[BZ #15857]
	* malloc/malloc.c (__libc_memalign): Check the value of bytes
	does not overflow.
2013-09-11 09:42:43 +01:00
Will Newton
55e17aadc1 malloc: Check for integer overflow in valloc.
A large bytes parameter to valloc could cause an integer overflow
and corrupt allocator internals. Check the overflow does not occur
before continuing with the allocation.

ChangeLog:

2013-09-11  Will Newton  <will.newton@linaro.org>

	[BZ #15856]
	* malloc/malloc.c (__libc_valloc): Check the value of bytes
	does not overflow.
2013-09-11 09:41:04 +01:00
Will Newton
1159a19369 malloc: Check for integer overflow in pvalloc.
A large bytes parameter to pvalloc could cause an integer overflow
and corrupt allocator internals. Check the overflow does not occur
before continuing with the allocation.

ChangeLog:

2013-09-11  Will Newton  <will.newton@linaro.org>

	[BZ #15855]
	* malloc/malloc.c (__libc_pvalloc): Check the value of bytes
	does not overflow.
2013-09-11 09:39:40 +01:00
Will Newton
0c66b8e985 malloc: Add realloc test.
The current tests don't test the functionality of realloc in detail.
Add a new test for realloc that exercises some of the corner cases
that are not otherwise tested.

ChangeLog:

2013-09-09  Will Newton  <will.newton@linaro.org>

	* malloc/Makefile: Add tst-realloc to tests.
	* malloc/tst-realloc.c: New file.
2013-09-09 09:20:09 +01:00
Ondřej Bílka
6f65e66895 Fix typos. 2013-08-29 09:11:45 +02:00
Joseph Myers
60d2f8f3c7 Use (void) in no-arguments function definitions. 2013-06-08 00:22:23 +00:00
Joseph Myers
2e09a79ada Avoid use of "register" as optimization hint. 2013-06-07 22:24:35 +00:00
Joseph Myers
fab7ce3f5b Link extra-libs consistently with libc and ld.so. 2013-05-31 16:16:33 +00:00
Ryan S. Arnold
e054f49430 Add #include <stdint.h> for uint[32|64]_t usage (except installed headers). 2013-05-16 11:32:54 -05:00
Peter Collingbourne
39b1f6172a Move _obstack_compat out of common
it is impossible to create an alias of a common symbol (as
compat_symbol does), because common symbols do not have a section or
an offset until linked.  GNU as tolerates aliases of common symbols by
simply creating another common symbol, but other assemblers (notably
LLVM's integrated assembler) are less tolerant.

2013-05-15  Peter Collingbourne  <pcc@google.com>

	* malloc/obstack.c (_obstack_compat): Add initializer.
-
2013-05-15 20:29:20 +02:00
Roland McGrath
0e2b9cdde7 BZ#14812: Add missing translation marker on some argp option argument names in utilities. 2013-03-18 14:59:47 -07:00
Joseph Myers
a222d91a13 Remove __malloc_ptr_t. 2013-03-08 21:27:42 +00:00
Joseph Myers
5cc45e102b Use ISO C prototype for __default_morecore. 2013-03-08 16:47:43 +00:00
Joseph Myers
dd54b8644c Remove __malloc_ptrdiff_t. 2013-03-08 16:46:45 +00:00
Joseph Myers
1ba4f03035 Remove __malloc_size_t. 2013-03-08 16:46:07 +00:00
Siddhesh Poyarekar
7da6d9ed26 Fix FPE in memusagestat when malloc utilization is zero
[BZ #15160]

Draw graphs for heap and stack only if MAXSIZE_HEAP and MAXSIZE_STACK
are non-zero.
2013-02-26 14:24:40 +05:30
Pino Toscano
2a26ef3a01 Add HAVE_MREMAP for mremap usage
Introduce (only on Linux) and use a HAVE_MREMAP symbol to advertize mremap
availability.

Move the malloc-sysdep.h include from arena.c to malloc.c, since what is
provided by malloc-sysdep.h is needed earlier in malloc.c, before the inclusion
of arena.c.
2013-01-17 21:08:12 +01:00
H.J. Lu
740b3dbee8 Add --enable-hardcoded-path-in-tests configure option 2013-01-11 07:14:18 -08:00
Joseph Myers
375607b9cc Clean up __MALLOC_* macros. 2013-01-07 15:00:47 +00:00
Andreas Schwab
2f5f40f465 mtrace: properly handle realloc (p, 0) 2013-01-03 11:18:04 +01:00
Joseph Myers
568035b787 Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00