Page MenuHomeFreeBSD

crt_malloc: Be more persistent when handling mmap() failure
ClosedPublic

Authored by kib on Oct 12 2021, 9:48 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sun, Apr 21, 10:07 PM
Unknown Object (File)
Feb 3 2024, 4:37 AM
Unknown Object (File)
Jan 12 2024, 8:43 AM
Unknown Object (File)
Dec 20 2023, 8:32 AM
Unknown Object (File)
Nov 10 2023, 8:20 AM
Unknown Object (File)
Nov 8 2023, 8:22 AM
Unknown Object (File)
Nov 7 2023, 7:31 AM
Unknown Object (File)
Oct 6 2023, 7:13 AM
Subscribers

Details

Summary
In the situation with limited address space, together with
fragmentation, it is possible for mmap() request in morecore() to fail
when asking for required size + NPOOLPAGES, but succeed without the
addend.  Retry allocation there.

PR:     259076
Reported by:    Denis Koreshkov <dynamic-wind@mail.ru>

Also

crt_malloc: use uintptr_t instead of long for arithmetic on addresses

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

kib requested review of this revision.Oct 12 2021, 9:48 PM

LGTM. roundup2 usage can be simplified but feel free to ignore that suggestion.

libexec/rtld-elf/rtld_malloc.c
262

roundup2 is now type-preserving, so you should be able to pass a caddr_t argument.

This revision is now accepted and ready to land.Oct 12 2021, 10:17 PM