summaryrefslogtreecommitdiffstats
path: root/lib/libkvm
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2009-11-06 13:10:12 +0000
committerjhb <jhb@FreeBSD.org>2009-11-06 13:10:12 +0000
commitb70da1b82c95648ac8d733329f88612a12df93bb (patch)
tree6a83f492c88dbfb8c270974983b4162ff561f406 /lib/libkvm
parent82c8b8b842c1752790b0e2731ec3790cf91a3cfc (diff)
downloadFreeBSD-src-b70da1b82c95648ac8d733329f88612a12df93bb.zip
FreeBSD-src-b70da1b82c95648ac8d733329f88612a12df93bb.tar.gz
Fix a copy-paste bug when reading data from the last 3 (7 for PAE) bytes of
a page mapped by a large page in the kernel. Submitted by: Dorr H. Clark dclark of engr.scu.edu MFC after: 1 week
Diffstat (limited to 'lib/libkvm')
-rw-r--r--lib/libkvm/kvm_i386.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/libkvm/kvm_i386.c b/lib/libkvm/kvm_i386.c
index 303b4af..ac86ba6 100644
--- a/lib/libkvm/kvm_i386.c
+++ b/lib/libkvm/kvm_i386.c
@@ -295,9 +295,9 @@ _kvm_vatop(kvm_t *kd, u_long va, off_t *pa)
#define PG_FRAME4M (~PAGE4M_MASK)
pde_pa = ((u_long)pde & PG_FRAME4M) + (va & PAGE4M_MASK);
s = _kvm_pa2off(kd, pde_pa, &ofs);
- if (s < sizeof pde) {
- _kvm_syserr(kd, kd->program,
- "_kvm_vatop: pde_pa not found");
+ if (s == 0) {
+ _kvm_err(kd, kd->program,
+ "_kvm_vatop: 4MB page address not in dump");
goto invalid;
}
*pa = ofs;
@@ -391,9 +391,9 @@ _kvm_vatop_pae(kvm_t *kd, u_long va, off_t *pa)
#define PG_FRAME2M (~PAGE2M_MASK)
pde_pa = ((u_long)pde & PG_FRAME2M) + (va & PAGE2M_MASK);
s = _kvm_pa2off(kd, pde_pa, &ofs);
- if (s < sizeof pde) {
- _kvm_syserr(kd, kd->program,
- "_kvm_vatop_pae: pde_pa not found");
+ if (s == 0) {
+ _kvm_err(kd, kd->program,
+ "_kvm_vatop: 2MB page address not in dump");
goto invalid;
}
*pa = ofs;
OpenPOWER on IntegriCloud