From 5937ccce520c4bddc986f741737465e2e8d94605 Mon Sep 17 00:00:00 2001 From: notaz Date: Wed, 11 Oct 2023 21:22:17 +0300 Subject: [PATCH 1/1] lightrec: handle a case of ignored MAP_FIXED_NOREPLACE --- libpcsxcore/lightrec/mem.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libpcsxcore/lightrec/mem.c b/libpcsxcore/lightrec/mem.c index b5caa783..9134d893 100644 --- a/libpcsxcore/lightrec/mem.c +++ b/libpcsxcore/lightrec/mem.c @@ -95,11 +95,16 @@ static int lightrec_mmap_ram(bool hugetlb) base = supported_io_bases[i]; for (j = 0; j < 4; j++) { - map = mmap_huge((void *)(base + j * 0x200000), - 0x200000, PROT_READ | PROT_WRITE, + void *base_ptr = (void *)(base + j * 0x200000); + map = mmap_huge(base_ptr, 0x200000, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED_NOREPLACE, memfd, 0); if (map == MAP_FAILED) break; + // some systems ignore MAP_FIXED_NOREPLACE + if (map != base_ptr) { + munmap(map, 0x200000); + break; + } } /* Impossible to map using this base */ -- 2.39.2