From owner-svn-src-all@FreeBSD.ORG Sun Jan 22 18:55:51 2012 Return-Path: Delivered-To: svn-src-all@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 14A3C106566B; Sun, 22 Jan 2012 18:55:51 +0000 (UTC) (envelope-from ache@vniz.net) Received: from vniz.net (vniz.net [194.87.13.69]) by mx1.freebsd.org (Postfix) with ESMTP id 52AD38FC1A; Sun, 22 Jan 2012 18:55:49 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by vniz.net (8.14.5/8.14.5) with ESMTP id q0MItlUk012021; Sun, 22 Jan 2012 22:55:48 +0400 (MSK) (envelope-from ache@vniz.net) Received: (from ache@localhost) by localhost (8.14.5/8.14.5/Submit) id q0MItlnw012020; Sun, 22 Jan 2012 22:55:47 +0400 (MSK) (envelope-from ache) Date: Sun, 22 Jan 2012 22:55:46 +0400 From: Andrey Chernov To: Mark Murray Message-ID: <20120122185545.GA11874@vniz.net> Mail-Followup-To: Andrey Chernov , Mark Murray , David Schultz , src-committers@FreeBSD.ORG, svn-src-all@FreeBSD.ORG, svn-src-head@FreeBSD.ORG References: <201201162018.q0GKIADK050161@svn.freebsd.org> <20120118061943.GA80874@vniz.net> <20120120055823.GA28177@vniz.net> <20120120215649.GA40016@vniz.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@FreeBSD.ORG, David Schultz , src-committers@FreeBSD.ORG, svn-src-all@FreeBSD.ORG Subject: Re: svn commit: r230230 - head/sys/dev/random X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jan 2012 18:55:51 -0000 On Sun, Jan 22, 2012 at 04:59:55PM +0000, Mark Murray wrote: > Andrey Chernov writes: > > > The usual way round this is with a flag. Set a static, volatile > > > flag, defaulting "off", and set it to "on" when the seeding has > > > happened. Then arc4random() can do the right thing, depending on > > > this flag. > > > > Ok, what about this version, is it right? libkern/arc4rand.c is not a > > module but always present in the kernel, so "arc4rand_iniseed_state" > > will be always accessible. > > > > --- dev/random/randomdev_soft.c.old 2011-09-26 07:35:48.000000000 +0400 > > +++ dev/random/randomdev_soft.c 2012-01-21 01:41:37.000000000 +0400 > > @@ -55,6 +55,8 @@ __FBSDID("$FreeBSD: src/sys/dev/random/r > > > > #define RANDOM_FIFO_MAX 256 /* How many events to queue up */ > > > > +extern int arc4rand_iniseed_state; > > + > > Should be in a header file, nad _possibly_ should be volatile. If it > works without being volatile, then OK. It was preliminary patch just to confirm/deny my understanding of your idea. I'll put it into header. In the final version I also plan to move that lines + if (arc4rand_iniseed_state == 1) + arc4rand_iniseed_state = -1; into arc4_randomstir() where they will be protected with mutex lock, so volatile will be not needed. It will be more logical, because other reseeding conditions are resetted there too. > The rest is OK. I've not tested it, so this is not a review, simply an > "OK" :-) Thanx for review! I'll send final version to this thread a bit later when I'll find more free time. -- http://ache.vniz.net/