diff options
author | cognet <cognet@FreeBSD.org> | 2006-10-24 23:27:52 +0000 |
---|---|---|
committer | cognet <cognet@FreeBSD.org> | 2006-10-24 23:27:52 +0000 |
commit | 3c4525479ba55c7392dae57b0e2977ad9541b5cc (patch) | |
tree | 8f47cb18d1b4408f708e33d04ee03e9c8182693c /sys/arm | |
parent | de0a74e0238dbb9ea885175c07d25a5c285c8382 (diff) | |
download | FreeBSD-src-3c4525479ba55c7392dae57b0e2977ad9541b5cc.zip FreeBSD-src-3c4525479ba55c7392dae57b0e2977ad9541b5cc.tar.gz |
Ooops, dump_avail[i] can be 0 if the RAM starts at 0x00000000, so check that
dump_avail[i + 1] is == 0 as a stop condition instead.
MFC after: 3 days
Diffstat (limited to 'sys/arm')
-rw-r--r-- | sys/arm/arm/vm_machdep.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/arm/arm/vm_machdep.c b/sys/arm/arm/vm_machdep.c index 2401011..a445f19 100644 --- a/sys/arm/arm/vm_machdep.c +++ b/sys/arm/arm/vm_machdep.c @@ -465,13 +465,13 @@ arm_ptovirt(vm_paddr_t pa) vm_offset_t addr = alloc_firstaddr; KASSERT(alloc_firstaddr != 0, ("arm_ptovirt called to early ?")); - for (i = 0; dump_avail[i]; i += 2) { + for (i = 0; dump_avail[i + 1]; i += 2) { if (pa >= dump_avail[i] && pa < dump_avail[i + 1]) break; addr += (dump_avail[i + 1] & L1_S_FRAME) + L1_S_SIZE - (dump_avail[i] & L1_S_FRAME); } - KASSERT(dump_avail[i] != 0, ("Trying to access invalid physical address")); + KASSERT(dump_avail[i + 1] != 0, ("Trying to access invalid physical address")); return (addr + (pa - (dump_avail[i] & L1_S_FRAME))); } @@ -487,12 +487,12 @@ arm_init_smallalloc(void) * to be able to do a pa => va association for any address. */ - for (i = 0; dump_avail[i]; i+= 2) { + for (i = 0; dump_avail[i + 1]; i+= 2) { to_map += (dump_avail[i + 1] & L1_S_FRAME) + L1_S_SIZE - (dump_avail[i] & L1_S_FRAME); } alloc_firstaddr = mapaddr = KERNBASE - to_map; - for (i = 0; dump_avail[i]; i+= 2) { + for (i = 0; dump_avail[i + 1]; i+= 2) { vm_offset_t size = (dump_avail[i + 1] & L1_S_FRAME) + L1_S_SIZE - (dump_avail[i] & L1_S_FRAME); vm_offset_t did = 0; |