]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
accel/tcg: Fix start page passed to tb_invalidate_phys_page_range__locked
authorMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Thu, 29 Jun 2023 08:25:21 +0000 (09:25 +0100)
committerMichael Tokarev <mjt@tls.msk.ru>
Sun, 2 Jul 2023 19:09:17 +0000 (22:09 +0300)
Due to a copy-paste error in tb_invalidate_phys_range, the wrong
start address was passed to tb_invalidate_phys_page_range__locked.
Correct is to use the start of each page in turn.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Fixes: e506ad6a05 ("accel/tcg: Pass last not end to tb_invalidate_phys_range")
Message-Id: <20230629082522.606219-2-mark.cave-ayland@ilande.co.uk>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
(cherry picked from commit 3307e08c6f142bb3d2406cfbc0ee19359748b51a)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
accel/tcg/tb-maint.c

index cb1f806f00d4609faca29a57795bea38d17d2156..2f15a31b3e7b62b3a04528943945f19753a5e90d 100644 (file)
@@ -1183,15 +1183,17 @@ void tb_invalidate_phys_range(tb_page_addr_t start, tb_page_addr_t last)
     index_last = last >> TARGET_PAGE_BITS;
     for (index = start >> TARGET_PAGE_BITS; index <= index_last; index++) {
         PageDesc *pd = page_find(index);
-        tb_page_addr_t bound;
+        tb_page_addr_t page_start, page_last;
 
         if (pd == NULL) {
             continue;
         }
         assert_page_locked(pd);
-        bound = (index << TARGET_PAGE_BITS) | ~TARGET_PAGE_MASK;
-        bound = MIN(bound, last);
-        tb_invalidate_phys_page_range__locked(pages, pd, start, bound, 0);
+        page_start = index << TARGET_PAGE_BITS;
+        page_last = page_start | ~TARGET_PAGE_MASK;
+        page_last = MIN(page_last, last);
+        tb_invalidate_phys_page_range__locked(pages, pd,
+                                              page_start, page_last, 0);
     }
     page_collection_unlock(pages);
 }