From: Bingwu Zhang <[email protected]> Unfixed mmap calls where start > reserved_va or the max guest addr should have a valid result.
Signed-off-by: Bingwu Zhang <[email protected]> --- tests/tcg/multiarch/test-mmap.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/tcg/multiarch/test-mmap.c b/tests/tcg/multiarch/test-mmap.c index 88f7a04101a3..2bfa52912704 100644 --- a/tests/tcg/multiarch/test-mmap.c +++ b/tests/tcg/multiarch/test-mmap.c @@ -497,6 +497,20 @@ void check_shrink_mmaps(void) fprintf(stdout, " passed\n"); } +void check_mmaps_beyond_addr_space(void) +{ + unsigned char *addr; + addr = mmap((void *)(-(unsigned long)pagesize * 10), pagesize * 2, + PROT_READ, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + fprintf(stdout, "%s addr=%p errno=%d", __func__, (void *)addr, errno); + fail_unless(addr != MAP_FAILED); + + memcpy(dummybuf, addr, 2 * pagesize); + munmap(addr, 2 * pagesize); + + fprintf(stdout, " passed\n"); +} + int main(int argc, char **argv) { char tempname[] = "/tmp/.cmmapXXXXXX"; @@ -540,6 +554,7 @@ int main(int argc, char **argv) check_file_unfixed_eof_mmaps(); check_invalid_mmaps(); check_shrink_mmaps(); + check_mmaps_beyond_addr_space(); /* Fails at the moment. */ /* check_aligned_anonymous_fixed_mmaps_collide_with_host(); */ -- 2.52.0
