mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
malloc: Remove corrupt arena flag
This is no longer needed because we now abort immediately once heap corruption is detected.
This commit is contained in:
@ -116,7 +116,7 @@ int __malloc_initialized = -1;
|
||||
} while (0)
|
||||
|
||||
#define arena_lock(ptr, size) do { \
|
||||
if (ptr && !arena_is_corrupt (ptr)) \
|
||||
if (ptr) \
|
||||
__libc_lock_lock (ptr->mutex); \
|
||||
else \
|
||||
ptr = arena_get2 ((size), NULL); \
|
||||
@ -832,7 +832,7 @@ reused_arena (mstate avoid_arena)
|
||||
result = next_to_use;
|
||||
do
|
||||
{
|
||||
if (!arena_is_corrupt (result) && !__libc_lock_trylock (result->mutex))
|
||||
if (!__libc_lock_trylock (result->mutex))
|
||||
goto out;
|
||||
|
||||
/* FIXME: This is a data race, see _int_new_arena. */
|
||||
@ -845,18 +845,6 @@ reused_arena (mstate avoid_arena)
|
||||
if (result == avoid_arena)
|
||||
result = result->next;
|
||||
|
||||
/* Make sure that the arena we get is not corrupted. */
|
||||
mstate begin = result;
|
||||
while (arena_is_corrupt (result) || result == avoid_arena)
|
||||
{
|
||||
result = result->next;
|
||||
if (result == begin)
|
||||
/* We looped around the arena list. We could not find any
|
||||
arena that was either not corrupted or not the one we
|
||||
wanted to avoid. */
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* No arena available without contention. Wait for the next in line. */
|
||||
LIBC_PROBE (memory_arena_reuse_wait, 3, &result->mutex, result, avoid_arena);
|
||||
__libc_lock_lock (result->mutex);
|
||||
@ -953,10 +941,6 @@ arena_get_retry (mstate ar_ptr, size_t bytes)
|
||||
if (ar_ptr != &main_arena)
|
||||
{
|
||||
__libc_lock_unlock (ar_ptr->mutex);
|
||||
/* Don't touch the main arena if it is corrupt. */
|
||||
if (arena_is_corrupt (&main_arena))
|
||||
return NULL;
|
||||
|
||||
ar_ptr = &main_arena;
|
||||
__libc_lock_lock (ar_ptr->mutex);
|
||||
}
|
||||
|
Reference in New Issue
Block a user