Module Name: src
Committed By: snj
Date: Sat Jan 30 19:12:26 UTC 2010
Modified Files:
src/sys/arch/xen/xen [netbsd-5]: privcmd.c
Log Message:
Pull up following revision(s) (requested by bouyer in ticket #1271):
sys/arch/xen/xen/privcmd.c: revision 1.40
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@
To generate a diff of this commit:
cvs rdiff -u -r1.33.4.1 -r1.33.4.2 src/sys/arch/xen/xen/privcmd.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/xen/xen/privcmd.c
diff -u src/sys/arch/xen/xen/privcmd.c:1.33.4.1 src/sys/arch/xen/xen/privcmd.c:1.33.4.2
--- src/sys/arch/xen/xen/privcmd.c:1.33.4.1 Sun Mar 8 03:19:50 2009
+++ src/sys/arch/xen/xen/privcmd.c Sat Jan 30 19:12:26 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: privcmd.c,v 1.33.4.1 2009/03/08 03:19:50 snj Exp $ */
+/* $NetBSD: privcmd.c,v 1.33.4.2 2010/01/30 19:12:26 snj Exp $ */
/*-
* Copyright (c) 2004 Christian Limpach.
@@ -32,7 +32,7 @@
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: privcmd.c,v 1.33.4.1 2009/03/08 03:19:50 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: privcmd.c,v 1.33.4.2 2010/01/30 19:12:26 snj Exp $");
#include "opt_compat_netbsd.h"
@@ -362,7 +362,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++) {
@@ -383,7 +383,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;
@@ -400,7 +400,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;
@@ -446,7 +447,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;