changeset 5d80de4bbf96 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=5d80de4bbf96
description:
gem5: fix a number of use after free issues
diffstat:
src/cpu/checker/cpu.cc | 3 ++-
src/sim/eventq.hh | 6 +++---
2 files changed, 5 insertions(+), 4 deletions(-)
diffs (37 lines):
diff -r 4968bf4ab67c -r 5d80de4bbf96 src/cpu/checker/cpu.cc
--- a/src/cpu/checker/cpu.cc Thu May 10 18:04:27 2012 -0500
+++ b/src/cpu/checker/cpu.cc Thu May 10 18:04:27 2012 -0500
@@ -264,13 +264,14 @@
* enabled. This is left as future work for the Checker: LSQ snooping
* and memory validation after stores have committed.
*/
+ bool was_prefetch = memReq->isPrefetch();
delete memReq;
//If we don't need to access a second cache line, stop now.
if (fault != NoFault || secondAddr <= addr)
{
- if (fault != NoFault && memReq->isPrefetch()) {
+ if (fault != NoFault && was_prefetch) {
fault = NoFault;
}
break;
diff -r 4968bf4ab67c -r 5d80de4bbf96 src/sim/eventq.hh
--- a/src/sim/eventq.hh Thu May 10 18:04:27 2012 -0500
+++ b/src/sim/eventq.hh Thu May 10 18:04:27 2012 -0500
@@ -516,11 +516,11 @@
event->flags.clear(Event::Squashed);
event->flags.clear(Event::Scheduled);
+ if (DTRACE(Event))
+ event->trace("descheduled");
+
if (event->flags.isSet(Event::AutoDelete))
delete event;
-
- if (DTRACE(Event))
- event->trace("descheduled");
}
inline void
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev