Module Name: src Committed By: riz Date: Fri Apr 20 23:35:20 UTC 2012
Modified Files: src/share/man/man4 [netbsd-6]: rnd.4 src/sys/dev [netbsd-6]: rndpseudo.c src/sys/kern [netbsd-6]: kern_rndpool.c kern_rndq.c subr_cprng.c src/sys/sys [netbsd-6]: cprng.h rnd.h Log Message: Pull up following revision(s) (requested by tls in ticket #190): sys/sys/rnd.h: revision 1.31 sys/sys/rnd.h: revision 1.32 sys/sys/cprng.h: revision 1.5 sys/kern/subr_cprng.c: revision 1.8 share/man/man4/rnd.4: revision 1.19 sys/kern/kern_rndq.c: revision 1.3 sys/dev/rndpseudo.c: revision 1.8 sys/dev/rndpseudo.c: revision 1.9 sys/kern/kern_rndpool.c: revision 1.2 Address multiple problems with rnd(4)/cprng(9): 1) Add a per-cpu CPRNG to handle short reads from /dev/urandom so that programs like perl don't drain the entropy pool dry by repeatedly opening, reading 4 bytes, closing. 2) Really fix the locking around reseeds and destroys. 3) Fix the opportunistic-reseed strategy so it actually works, reseeding existing RNGs once each (as they are used, so idle RNGs don't get reseeded) until the pool is half empty or newly full again. Fix a bug and a compilation problem. Bug: spin mutexes don't have owners, so KASSERT(!mutex_owned()) shouldn't be used to assert that the current LWP does not have the mutex. Compilation problem: explicitly include sys/mutex.h from rnd.h so evbarm builds again. To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.18.2.1 src/share/man/man4/rnd.4 cvs rdiff -u -r1.6.2.1 -r1.6.2.2 src/sys/dev/rndpseudo.c cvs rdiff -u -r1.1 -r1.1.2.1 src/sys/kern/kern_rndpool.c cvs rdiff -u -r1.1.2.1 -r1.1.2.2 src/sys/kern/kern_rndq.c cvs rdiff -u -r1.5.2.1 -r1.5.2.2 src/sys/kern/subr_cprng.c cvs rdiff -u -r1.4 -r1.4.2.1 src/sys/sys/cprng.h cvs rdiff -u -r1.29.2.1 -r1.29.2.2 src/sys/sys/rnd.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.