Author: luporl
Date: Tue Feb 12 11:29:03 2019
New Revision: 344049
URL: https://svnweb.freebsd.org/changeset/base/344049

Log:
  [ppc64] prevent infinite loop on icache sync
  
  At moea64_sync_icache(), when the 'va' argument has page size
  alignment, round_page() will return the same value as 'va'.
  This would cause 'len' to be 0 and thus an infinite loop.
  
  With this change, 'lim' will always point to the next page boundary.
  
  This issue occurred especially during debugging sessions, when a breakpoint
  was placed on an exact page-aligned offset, for instance.
  
  Reviewed by:  jhibbits
  Differential Revision:        https://reviews.freebsd.org/D19149

Modified:
  head/sys/powerpc/aim/mmu_oea64.c

Modified: head/sys/powerpc/aim/mmu_oea64.c
==============================================================================
--- head/sys/powerpc/aim/mmu_oea64.c    Tue Feb 12 10:17:21 2019        
(r344048)
+++ head/sys/powerpc/aim/mmu_oea64.c    Tue Feb 12 11:29:03 2019        
(r344049)
@@ -2807,7 +2807,7 @@ moea64_sync_icache(mmu_t mmu, pmap_t pm, vm_offset_t v
 
        PMAP_LOCK(pm);
        while (sz > 0) {
-               lim = round_page(va);
+               lim = round_page(va+1);
                len = MIN(lim - va, sz);
                pvo = moea64_pvo_find_va(pm, va & ~ADDR_POFF);
                if (pvo != NULL && !(pvo->pvo_pte.pa & LPTE_I)) {
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to