mem-cache: fix invalid iterator access
authorJavier Bueno <javier.bueno@metempsy.com>
Thu, 15 Nov 2018 15:19:45 +0000 (16:19 +0100)
committerJavier Bueno Hedo <javier.bueno@metempsy.com>
Thu, 15 Nov 2018 17:31:10 +0000 (17:31 +0000)
An iterator was assigned end() and then it was used to access
its corresponding element.

Change-Id: I87246cf56cbc694dd6b4e2cabbe84a08429d2ac3
Reviewed-on: https://gem5-review.googlesource.com/c/14361
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>

src/mem/cache/prefetch/queued.cc

index ce14b5ac5fea1ecf37c99519d64b71c0372e1fc4..ba4c940c1ca851d103d8933fa456025fb4aa8c08 100644 (file)
@@ -265,8 +265,9 @@ QueuedPrefetcher::insert(AddrPriority &pf_info, bool is_secure)
         pfq.emplace_back(dpp);
     } else {
         iterator it = pfq.end();
-        while (it != pfq.begin() && dpp > *it)
+        do {
             --it;
+        } while (it != pfq.begin() && dpp > *it);
         /* If we reach the head, we have to see if the new element is new head
          * or not */
         if (it == pfq.begin() && dpp <= *it)