From 793f71bf2e32bf92093132dd84fccf8ac8b566d4 Mon Sep 17 00:00:00 2001 From: "Bjoern A. Zeeb" Date: Fri, 14 May 2010 21:11:58 +0000 Subject: [PATCH] Fix an issue with the dynamic pcpu/vnet data allocators. We cannot expect that modspace is the last entry in the linker set and thus that modspace + possible extra space up to PAGE_SIZE would be contiguous. For the moment do not support more than *_MODMIN space and ignore the extra space (*). (*) We know how to get it back but it'll need testing. Discussed with: jeff, rwatson (briefly) Reviewed by: jeff Sponsored by: The FreeBSD Foundation Sponsored by: CK Software GmbH MFC after: 4 days --- sys/kern/subr_pcpu.c | 2 +- sys/net/vnet.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/kern/subr_pcpu.c b/sys/kern/subr_pcpu.c index f28ad61988e..c63a9710a62 100644 --- a/sys/kern/subr_pcpu.c +++ b/sys/kern/subr_pcpu.c @@ -125,7 +125,7 @@ dpcpu_startup(void *dummy __unused) df = malloc(sizeof(*df), M_PCPU, M_WAITOK | M_ZERO); df->df_start = (uintptr_t)&DPCPU_NAME(modspace); - df->df_len = DPCPU_MODSIZE; + df->df_len = DPCPU_MODMIN; TAILQ_INSERT_HEAD(&dpcpu_head, df, df_link); sx_init(&dpcpu_lock, "dpcpu alloc lock"); } diff --git a/sys/net/vnet.c b/sys/net/vnet.c index 8013f5ed594..fb0db347b32 100644 --- a/sys/net/vnet.c +++ b/sys/net/vnet.c @@ -348,7 +348,7 @@ vnet_data_startup(void *dummy __unused) df = malloc(sizeof(*df), M_VNET_DATA_FREE, M_WAITOK | M_ZERO); df->vnd_start = (uintptr_t)&VNET_NAME(modspace); - df->vnd_len = VNET_MODSIZE; + df->vnd_len = VNET_MODMIN; TAILQ_INSERT_HEAD(&vnet_data_free_head, df, vnd_link); sx_init(&vnet_data_free_lock, "vnet_data alloc lock"); }