summaryrefslogtreecommitdiff
path: root/src/mem/cache/mshr.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem/cache/mshr.cc')
-rw-r--r--src/mem/cache/mshr.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/mem/cache/mshr.cc b/src/mem/cache/mshr.cc
index bc46ed267..e4b62e230 100644
--- a/src/mem/cache/mshr.cc
+++ b/src/mem/cache/mshr.cc
@@ -366,7 +366,11 @@ MSHR::handleSnoop(PacketPtr pkt, Counter _order)
// Actual target device (typ. a memory) will delete the
// packet on reception, so we need to save a copy here.
- PacketPtr cp_pkt = new Packet(pkt, true);
+
+ // Clear flags and also allocate new data as the original
+ // packet data storage may have been deleted by the time we
+ // get to send this packet.
+ PacketPtr cp_pkt = new Packet(pkt, true, true);
targets.add(cp_pkt, curTick(), _order, Target::FromSnoop,
downstreamPending && targets.needsExclusive);