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;