Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Jul 2013 17:26:16 +1000 (EST)
From:      Bruce Evans <brde@optusnet.com.au>
To:        Tim Kientzle <kientzle@FreeBSD.org>
Cc:        svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org
Subject:   Re: svn commit: r253636 - head/sys/vm
Message-ID:  <20130725171038.O841@besplex.bde.org>
In-Reply-To: <201307250348.r6P3mbsG049595@svn.freebsd.org>
References:  <201307250348.r6P3mbsG049595@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 25 Jul 2013, Tim Kientzle wrote:

> Log:
>  Clear entire map structure including locks so that the
>  locks don't accidentally appear to have been already
>  initialized.
>
>  In particular, this fixes a consistent kernel crash on
>  armv6 with:
>    panic: lock "vm map (user)" 0xc09cc050 already initialized
>  that appeared with r251709.
>
>  PR: arm/180820
>
> Modified:
>  head/sys/vm/vm_map.c
>
> Modified: head/sys/vm/vm_map.c
> ==============================================================================
> --- head/sys/vm/vm_map.c	Thu Jul 25 03:44:12 2013	(r253635)
> +++ head/sys/vm/vm_map.c	Thu Jul 25 03:48:37 2013	(r253636)
> @@ -239,8 +239,7 @@ vm_map_zinit(void *mem, int size, int fl
> 	vm_map_t map;
>
> 	map = (vm_map_t)mem;
> -	map->nentries = 0;
> -	map->size = 0;
> +	memset(map, 0, sizeof(*map));
> 	mtx_init(&map->system_mtx, "vm map (system)", NULL, MTX_DEF | MTX_DUPOK);
> 	sx_init(&map->lock, "vm map (user)");
> 	return (0);

memset() to value 0 is spelled bzero() in the kernel.

Before this commit, vm used normal style in 21 of 28 instances.

The style regression is even smaller in kern -- 18 of 169 instances
(3 in comments, and 1 of these in a loop doing a memset to a nonzero
value, which was required before about FreeBSD-4 since memset() didn't
exist in the kernel.  memset() is still a slightly pessimized wrapper
round bzero() when the value is nonzero, and a more pessimized loop
otherwise).

In FreeBSD-4, this style bug was not present in vm (0 of 16 instances)
and was smaller in kern (6 of 121 instances (3 in comments, and 1 to
#define a buggy memset() in terms of bzero() for the other 2)).

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130725171038.O841>