summaryrefslogtreecommitdiffstats
path: root/lib/libkvm/kvm_amd64.c
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2005-10-20 05:41:38 +0000
committerpeter <peter@FreeBSD.org>2005-10-20 05:41:38 +0000
commite62b997c41571d84324a7c4090af53a7fe74ff9f (patch)
tree02a7c9251deadd967b69f895279f2b6cdf3f1425 /lib/libkvm/kvm_amd64.c
parentcd579e831a1baa37bf0078180c99d3f610b19217 (diff)
downloadFreeBSD-src-e62b997c41571d84324a7c4090af53a7fe74ff9f.zip
FreeBSD-src-e62b997c41571d84324a7c4090af53a7fe74ff9f.tar.gz
Fix a well duplicated fencepost error that stopped crashdumps being
readable on certain random memory configurations. If the libkvm consumer tried to read something that was in the very last pdpe, pde or pte slot, it would bogusly fail. This is broken in RELENG_6 too.
Diffstat (limited to 'lib/libkvm/kvm_amd64.c')
-rw-r--r--lib/libkvm/kvm_amd64.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/libkvm/kvm_amd64.c b/lib/libkvm/kvm_amd64.c
index 534323c..e73e6a2 100644
--- a/lib/libkvm/kvm_amd64.c
+++ b/lib/libkvm/kvm_amd64.c
@@ -241,7 +241,7 @@ _kvm_vatop(kvm_t *kd, u_long va, off_t *pa)
(pdpeindex * sizeof(pdp_entry_t));
s = _kvm_pa2off(kd, pdpe_pa, &ofs);
- if (s <= sizeof pdpe) {
+ if (s < sizeof pdpe) {
_kvm_err(kd, kd->program, "_kvm_vatop: pdpe_pa not found");
goto invalid;
}
@@ -262,7 +262,7 @@ _kvm_vatop(kvm_t *kd, u_long va, off_t *pa)
pde_pa = ((u_long)pdpe & PG_FRAME) + (pdeindex * sizeof(pd_entry_t));
s = _kvm_pa2off(kd, pde_pa, &ofs);
- if (s <= sizeof pde) {
+ if (s < sizeof pde) {
_kvm_syserr(kd, kd->program, "_kvm_vatop: pde_pa not found");
goto invalid;
}
@@ -299,7 +299,7 @@ _kvm_vatop(kvm_t *kd, u_long va, off_t *pa)
pte_pa = ((u_long)pde & PG_FRAME) + (pteindex * sizeof(pt_entry_t));
s = _kvm_pa2off(kd, pte_pa, &ofs);
- if (s <= sizeof pte) {
+ if (s < sizeof pte) {
_kvm_err(kd, kd->program, "_kvm_vatop: pte_pa not found");
goto invalid;
}
OpenPOWER on IntegriCloud