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

Reply via email to