diff options
author | lzang1 <lin.zang@intel.com> | 2014-02-21 14:15:01 +0800 |
---|---|---|
committer | lzang1 <lin.zang@intel.com> | 2014-02-25 10:32:24 +0800 |
commit | 385de73a252806b212028c4aaccb86c296f2facc (patch) | |
tree | 5e270c355e06a3f84b5aa4884b8780f64eb92059 /runtime | |
parent | 3fcf18e25241253f23efbeebe77b2a4c4a7c54d3 (diff) | |
download | art-385de73a252806b212028c4aaccb86c296f2facc.zip art-385de73a252806b212028c4aaccb86c296f2facc.tar.gz art-385de73a252806b212028c4aaccb86c296f2facc.tar.bz2 |
Fix the memory protection issue in RosAllocSpace::CreateFromMemMap()
From the implementation of RosAllocSpace::CreateFromMemMap(), the memory
beyond the starting_size should be protected.
But the argument of mprotect is wrongly set to be "capacity -
initial_size", logically it should be "capacity - starting_size"
This patch also fix the same issue in dlmalloc
Change-Id: Icbd4ba790f344d4fa79d9896657f638a03d6f8aa
Author: Lin Zang <lin.zang@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/gc/space/dlmalloc_space.cc | 6 | ||||
-rw-r--r-- | runtime/gc/space/rosalloc_space.cc | 6 |
2 files changed, 6 insertions, 6 deletions
diff --git a/runtime/gc/space/dlmalloc_space.cc b/runtime/gc/space/dlmalloc_space.cc index 931ed21..1493019 100644 --- a/runtime/gc/space/dlmalloc_space.cc +++ b/runtime/gc/space/dlmalloc_space.cc @@ -53,10 +53,10 @@ DlMallocSpace* DlMallocSpace::CreateFromMemMap(MemMap* mem_map, const std::strin return nullptr; } - // Protect memory beyond the initial size. + // Protect memory beyond the starting size. morecore will add r/w permissions when necessory byte* end = mem_map->Begin() + starting_size; - if (capacity - initial_size > 0) { - CHECK_MEMORY_CALL(mprotect, (end, capacity - initial_size, PROT_NONE), name); + if (capacity - starting_size > 0) { + CHECK_MEMORY_CALL(mprotect, (end, capacity - starting_size, PROT_NONE), name); } // Everything is set so record in immutable structure and leave diff --git a/runtime/gc/space/rosalloc_space.cc b/runtime/gc/space/rosalloc_space.cc index 86e441e..cc6c1d9 100644 --- a/runtime/gc/space/rosalloc_space.cc +++ b/runtime/gc/space/rosalloc_space.cc @@ -56,10 +56,10 @@ RosAllocSpace* RosAllocSpace::CreateFromMemMap(MemMap* mem_map, const std::strin return NULL; } - // Protect memory beyond the initial size. + // Protect memory beyond the starting size. MoreCore will add r/w permissions when necessory byte* end = mem_map->Begin() + starting_size; - if (capacity - initial_size > 0) { - CHECK_MEMORY_CALL(mprotect, (end, capacity - initial_size, PROT_NONE), name); + if (capacity - starting_size > 0) { + CHECK_MEMORY_CALL(mprotect, (end, capacity - starting_size, PROT_NONE), name); } // Everything is set so record in immutable structure and leave |