Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Jun 2005 21:51:02 GMT
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 78823 for review
Message-ID:  <200506222151.j5MLp2XY076736@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=78823

Change 78823 by peter@peter_melody on 2005/06/22 21:51:01

	Fix some more oops!'s in the kvm code.
	1) store PML4 pointer in the right struct
	2) don't forget to do the pa2ofs thing for returned values

Affected files ...

.. //depot/projects/hammer/lib/libkvm/kvm_amd64.c#10 edit

Differences ...

==== //depot/projects/hammer/lib/libkvm/kvm_amd64.c#10 (text+ko) ====

@@ -141,7 +141,6 @@
 int
 _kvm_initvtop(kvm_t *kd)
 {
-	struct vmstate *vm;
 	struct nlist nlist[2];
 	u_long pa;
 	u_long kernbase;
@@ -149,12 +148,12 @@
 	Elf_Ehdr *ehdr;
 	size_t hdrsz;
 
-	kd->vmst = (struct vmstate *)_kvm_malloc(kd, sizeof(*vm));
+	kd->vmst = (struct vmstate *)_kvm_malloc(kd, sizeof(*kd->vmst));
 	if (kd->vmst == 0) {
 		_kvm_err(kd, kd->program, "cannot allocate vm");
 		return (-1);
 	}
-	vm->PML4 = 0;
+	kd->vmst->PML4 = 0;
 
 	if (_kvm_maphdrs(kd, sizeof(Elf_Ehdr)) == -1)
 		return (-1);
@@ -190,7 +189,7 @@
 		_kvm_err(kd, kd->program, "cannot read KPML4phys");
 		return (-1);
 	}
-	vm->PML4 = PML4;
+	kd->vmst->PML4 = PML4;
 	return (0);
 }
 
@@ -283,6 +282,7 @@
 #define	PAGE2M_MASK	(NBPDR - 1)
 #define	PG_FRAME2M	(~PAGE2M_MASK)
 		*pa = ((u_long)pde & PG_FRAME2M) + (va & PAGE2M_MASK);
+		_kvm_pa2off(kd, *pa, pa);
 		return (NBPDR - (va & PAGE2M_MASK));
 	}
 
@@ -306,6 +306,7 @@
 		goto invalid;
 
 	*pa = ((u_long)pte & PG_FRAME) + offset;
+	_kvm_pa2off(kd, *pa, pa);
 	return (PAGE_SIZE - offset);
 
 invalid:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200506222151.j5MLp2XY076736>