svn commit: r344049 - head/sys/powerpc/aim
Leandro Lupori
luporl at FreeBSD.org
Tue Feb 12 11:29:04 UTC 2019
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)) {
More information about the svn-src-all
mailing list