Skip to content

Commit

Permalink
stress-mmaptorture: mseal a page in child process, fix munmap address
Browse files Browse the repository at this point in the history
Signed-off-by: Colin Ian King <[email protected]>
  • Loading branch information
ColinIanKing committed Feb 20, 2025
1 parent d77540b commit bb7c572
Showing 1 changed file with 16 additions and 3 deletions.
19 changes: 16 additions & 3 deletions stress-mmaptorture.c
Original file line number Diff line number Diff line change
Expand Up @@ -564,25 +564,38 @@ static int stress_mmaptorture_child(stress_args_t *args, void *context)
if (pid == 0) {
/* Pass 1, free random pages */
for (i = 0; i < n; i++) {
ptr = mappings[i].addr;
mmap_size = mappings[i].size;

if (madvise((void *)ptr, mmap_size, MADV_DONTNEED) == 0)
mmap_stats->madvise_pages += mmap_size / page_size;

if (stress_mwc1()) {
ptr = mappings[i].addr;
mmap_size = mappings[i].size;
if ((ptr != MAP_FAILED) && (mmap_size > 0)) {
(void)stress_munmap_retry_enomem((void *)(ptr + i), page_size);
mappings[i].addr = MAP_FAILED;
mappings[i].size = 0;
}
}
}

for (i = 0; i < n; i++) {
ptr = mappings[i].addr;
mmap_size = mappings[i].size;

if ((ptr != MAP_FAILED) && (mmap_size > 0)) {
(void)shim_mseal(ptr, mmap_size, 0);
break;
}
}

/* Pass 2, free unfreed pages */
for (i = 0; i < n; i++) {
ptr = mappings[i].addr;
mmap_size = mappings[i].size;

if ((ptr != MAP_FAILED) && (mmap_size > 0)) {
(void)stress_munmap_retry_enomem((void *)(ptr + i), page_size);
(void)stress_munmap_retry_enomem((void *)ptr, mmap_size);
mappings[i].addr = MAP_FAILED;
mappings[i].size = 0;
}
Expand Down

0 comments on commit bb7c572

Please sign in to comment.