Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/xen/xen Use paddr_t to store physical address and c...
details: https://anonhg.NetBSD.org/src/rev/24b26ce49917
branches: trunk
changeset: 751067:24b26ce49917
user: bouyer <bouyer%NetBSD.org@localhost>
date: Sat Jan 23 18:26:37 2010 +0000
description:
Use paddr_t to store physical address and cast mfn values to paddr_t
before shift. Fix overflow issue preventing xend from working as
reported by Mark Davies on port-xen@
diffstat:
sys/arch/xen/xen/privcmd.c | 13 +++++++------
1 files changed, 7 insertions(+), 6 deletions(-)
diffs (55 lines):
diff -r b793b8ed7bf2 -r 24b26ce49917 sys/arch/xen/xen/privcmd.c
--- a/sys/arch/xen/xen/privcmd.c Sat Jan 23 17:44:44 2010 +0000
+++ b/sys/arch/xen/xen/privcmd.c Sat Jan 23 18:26:37 2010 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: privcmd.c,v 1.39 2009/10/23 02:32:34 snj Exp $ */
+/* $NetBSD: privcmd.c,v 1.40 2010/01/23 18:26:37 bouyer Exp $ */
/*-
* Copyright (c) 2004 Christian Limpach.
@@ -27,7 +27,7 @@
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: privcmd.c,v 1.39 2009/10/23 02:32:34 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: privcmd.c,v 1.40 2010/01/23 18:26:37 bouyer Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -336,7 +336,7 @@
privcmd_mmap_t *mcmd = ap->a_data;
privcmd_mmap_entry_t mentry;
vaddr_t va;
- u_long ma;
+ paddr_t ma;
struct vm_map *vmm = &curlwp->l_proc->p_vmspace->vm_map;
for (i = 0; i < mcmd->num; i++) {
@@ -357,7 +357,7 @@
if (maddr == NULL)
return ENOMEM;
va = mentry.va & ~PAGE_MASK;
- ma = mentry.mfn << PGSHIFT; /* XXX ??? */
+ ma = ((paddr_t)mentry.mfn) << PGSHIFT; /* XXX ??? */
for (j = 0; j < mentry.npages; j++) {
maddr[j] = ma;
ma += PAGE_SIZE;
@@ -374,7 +374,8 @@
int i;
privcmd_mmapbatch_t* pmb = ap->a_data;
vaddr_t va0, va;
- u_long mfn, ma;
+ u_long mfn;
+ paddr_t ma;
struct vm_map *vmm;
struct vm_map_entry *entry;
vm_prot_t prot;
@@ -420,7 +421,7 @@
UVM_KMF_VAONLY);
return error;
}
- ma = mfn << PGSHIFT;
+ ma = ((paddr_t)mfn) << PGSHIFT;
if (pmap_enter_ma(pmap_kernel(), trymap, ma, 0,
prot, PMAP_CANFAIL, pmb->dom)) {
mfn |= 0xF0000000;
Home |
Main Index |
Thread Index |
Old Index