From 1ab2c3341a0e50100ef3d3cbef4da0f4b098bbf8 Mon Sep 17 00:00:00 2001 From: Felix Kuehling Date: Tue, 10 Nov 2015 18:19:56 -0500 Subject: [PATCH] Reserve address space with PROT_NONE Access to reserved address space that has not been allocated should result in a segfault. Use PROT_NONE to ensure that. Change-Id: Ic5da9392fabbe78c9ec14f98e8b7b47e5267a98a [ROCm/ROCR-Runtime commit: 62337b6c0aeac43762b9d2116bb9c9dbbf71c7e0] --- projects/rocr-runtime/src/fmm.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/projects/rocr-runtime/src/fmm.c b/projects/rocr-runtime/src/fmm.c index ce4a40b8e6..80d52aa8e0 100644 --- a/projects/rocr-runtime/src/fmm.c +++ b/projects/rocr-runtime/src/fmm.c @@ -754,7 +754,7 @@ static void* fmm_allocate_host_gpu(uint32_t gpu_id, /* FIXME: host memory allocated in this way should be mapped on all GPUs */ void *ret = mmap(mem, MemorySizeInBytes, - PROT_READ | PROT_WRITE | PROT_EXEC, + PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, kfd_fd , mmap_offset); if (ret == MAP_FAILED) { __fmm_release(gpu_id, mem, MemorySizeInBytes, aperture); @@ -898,7 +898,7 @@ void fmm_release(void *address, uint64_t MemorySizeInBytes) address >= dgpu_shared_aperture_base && address <= dgpu_shared_aperture_limit) { /* Remove any CPU mapping, but keep the address range reserved */ - mmap(address, MemorySizeInBytes, PROT_READ | PROT_WRITE, + mmap(address, MemorySizeInBytes, PROT_NONE, MAP_ANONYMOUS | MAP_NORESERVE | MAP_PRIVATE | MAP_FIXED, -1, 0); } @@ -1353,7 +1353,7 @@ static void *reserve_address(void *addr, long long unsigned int len) if (len <= 0) return NULL; - ret_addr = mmap(addr, len, PROT_READ | PROT_WRITE, + ret_addr = mmap(addr, len, PROT_NONE, MAP_ANONYMOUS | MAP_NORESERVE | MAP_PRIVATE, -1, 0); if (addr == MAP_FAILED) return NULL;