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)
Wed, Apr 16, 9:03 PM
Unknown Object (File)
Wed, Apr 16, 11:22 AM
Unknown Object (File)
Tue, Apr 8, 1:11 PM
Unknown Object (File)
Sat, Apr 5, 10:23 AM
Unknown Object (File)
Fri, Apr 4, 9:36 AM
Unknown Object (File)
Mar 22 2025, 10:19 AM
Unknown Object (File)
Mar 21 2025, 10:37 AM
Unknown Object (File)
Feb 23 2025, 3:26 PM
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 Skipped
Unit
Tests Skipped

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
264

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