summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRico Amslinger <rico.amslinger@informatik.uni-augsburg.de>2018-02-13 15:34:43 +0100
committerRico Amslinger <rico.amslinger@informatik.uni-augsburg.de>2018-02-14 09:52:38 +0000
commit8da5e6b8b6fc1665edefffdf36c0aa7b9d53370d (patch)
tree3e452b4d6b3072152bc181fdeeef29f57d168b8c
parent4e13495f5d8e1e98609fd67b9b29c67eaeb753fc (diff)
downloadgem5-8da5e6b8b6fc1665edefffdf36c0aa7b9d53370d.tar.xz
mem, sim-se: Fixed seg-fault in EmulationPageTable::remap
When moving a memory region the target region should be unmapped. The assertion does reflect this, but the following line accesses the invalid pointer regardless. This commit replaces the pointer access with an emplace. Change-Id: I85f9be4e6c223eab447c75043e593ed3f90017e1 Reviewed-on: https://gem5-review.googlesource.com/8261 Reviewed-by: Gabe Black <gabeblack@google.com> Reviewed-by: Brandon Potter <Brandon.Potter@amd.com> Maintainer: Gabe Black <gabeblack@google.com>
-rw-r--r--src/mem/page_table.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/mem/page_table.cc b/src/mem/page_table.cc
index 8a11ada76..cd3422560 100644
--- a/src/mem/page_table.cc
+++ b/src/mem/page_table.cc
@@ -87,7 +87,7 @@ EmulationPageTable::remap(Addr vaddr, int64_t size, Addr new_vaddr)
auto old_it = pTable.find(vaddr);
assert(old_it != pTable.end() && new_it == pTable.end());
- new_it->second = old_it->second;
+ pTable.emplace(new_vaddr, old_it->second);
pTable.erase(old_it);
size -= pageSize;
vaddr += pageSize;