mirror of
https://github.com/opnsense/src.git
synced 2026-06-08 16:22:46 -04:00
posixshm tests: Fix occasional largepage_mprotect failures
largepage_mprotect maps a superpage and later extends the mapping. This
occasionally fails with ASLR disabled. To fix this, first try to
reserve a sufficiently large virtual address region.
Reported by: Jenkins
Sponsored by: The FreeBSD Foundation
(cherry picked from commit 321e586e46)
This commit is contained in:
parent
835f59f324
commit
16c60a70c9
1 changed files with 12 additions and 2 deletions
|
|
@ -1434,9 +1434,19 @@ ATF_TC_BODY(largepage_mprotect, tc)
|
|||
|
||||
pscnt = pagesizes(ps);
|
||||
for (int i = 1; i < pscnt; i++) {
|
||||
/*
|
||||
* Reserve a contiguous region in the address space to avoid
|
||||
* spurious failures in the face of ASLR.
|
||||
*/
|
||||
addr = mmap(NULL, ps[i] * 2, PROT_NONE,
|
||||
MAP_ANON | MAP_ALIGNED(ffsl(ps[i]) - 1), -1, 0);
|
||||
ATF_REQUIRE_MSG(addr != MAP_FAILED,
|
||||
"mmap(%zu bytes) failed; error=%d", ps[i], errno);
|
||||
ATF_REQUIRE(munmap(addr, ps[i] * 2) == 0);
|
||||
|
||||
fd = shm_open_large(i, SHM_LARGEPAGE_ALLOC_DEFAULT, ps[i]);
|
||||
addr = mmap(NULL, ps[i], PROT_READ | PROT_WRITE, MAP_SHARED, fd,
|
||||
0);
|
||||
addr = mmap(addr, ps[i], PROT_READ | PROT_WRITE,
|
||||
MAP_SHARED | MAP_FIXED, fd, 0);
|
||||
ATF_REQUIRE_MSG(addr != MAP_FAILED,
|
||||
"mmap(%zu bytes) failed; error=%d", ps[i], errno);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue