Module Name: src Committed By: matt Date: Fri Mar 14 22:34:35 UTC 2014
Modified Files: src/sys/kern [matt-nb5-mips64]: kern_malloc.c Log Message: Deal with the issue that VM_MAP_INTRSAFE km_suballoc returns more than asked for so the space needs for kmemusage accounting has to needs adjusted as well. To generate a diff of this commit: cvs rdiff -u -r1.121.10.2 -r1.121.10.3 src/sys/kern/kern_malloc.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/kern/kern_malloc.c diff -u src/sys/kern/kern_malloc.c:1.121.10.2 src/sys/kern/kern_malloc.c:1.121.10.3 --- src/sys/kern/kern_malloc.c:1.121.10.2 Fri Mar 14 21:45:41 2014 +++ src/sys/kern/kern_malloc.c Fri Mar 14 22:34:35 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_malloc.c,v 1.121.10.2 2014/03/14 21:45:41 matt Exp $ */ +/* $NetBSD: kern_malloc.c,v 1.121.10.3 2014/03/14 22:34:35 matt Exp $ */ /* * Copyright (c) 1987, 1991, 1993 @@ -66,7 +66,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_malloc.c,v 1.121.10.2 2014/03/14 21:45:41 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_malloc.c,v 1.121.10.3 2014/03/14 22:34:35 matt Exp $"); #include <sys/param.h> #include <sys/proc.h> @@ -926,7 +926,12 @@ kmeminit(void) kmembase = (char *)kmb; kmemlimit = (char *)kml; - KASSERT(((kmemlimit - kmembase) >> PAGE_SHIFT) == nkmempages); + /* + * Since the suballoc was VM_MAP_INTRSAFE, the allocated size + * may be larger than was we asked for. Recompute nkmempages + * to cover the additional space allocated. + */ + nkmempages = (kmemlimit - kmembase) >> PAGE_SHIFT; kmemusage = (struct kmemusage *) uvm_km_alloc(kernel_map, (vsize_t)(nkmempages * sizeof(struct kmemusage)), 0,