PERFORCE change 78823 for review

Peter Wemm peter at FreeBSD.org
Wed Jun 22 21:51:04 GMT 2005


http://perforce.freebsd.org/chv.cgi?CH=78823

Change 78823 by peter at 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:


More information about the p4-projects mailing list