diff options
author | Rico Amslinger <rico.amslinger@informatik.uni-augsburg.de> | 2018-02-13 15:34:43 +0100 |
---|---|---|
committer | Rico Amslinger <rico.amslinger@informatik.uni-augsburg.de> | 2018-02-14 09:52:38 +0000 |
commit | 8da5e6b8b6fc1665edefffdf36c0aa7b9d53370d (patch) | |
tree | 3e452b4d6b3072152bc181fdeeef29f57d168b8c /src/mem | |
parent | 4e13495f5d8e1e98609fd67b9b29c67eaeb753fc (diff) | |
download | gem5-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>
Diffstat (limited to 'src/mem')
-rw-r--r-- | src/mem/page_table.cc | 2 |
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; |