diff options
| author | Ruslan Ermilov <ru@FreeBSD.org> | 2009-10-24 04:55:14 +0000 |
|---|---|---|
| committer | Ruslan Ermilov <ru@FreeBSD.org> | 2009-10-24 04:55:14 +0000 |
| commit | f47552e770ac51134e605d93efd6c534b2809388 (patch) | |
| tree | 0483c4d2594c00ada1aeb80547a753779f4480c9 | |
| parent | 115753ce9eb755279fea668547d1692b4ec06ddf (diff) | |
Notes
| -rw-r--r-- | sys/kern/init_main.c | 13 | ||||
| -rw-r--r-- | sys/kern/stack_protector.c | 3 | ||||
| -rw-r--r-- | sys/sys/kernel.h | 1 |
3 files changed, 15 insertions, 2 deletions
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c index ce0ea9e6d062..668ca1a1c57f 100644 --- a/sys/kern/init_main.c +++ b/sys/kern/init_main.c @@ -557,6 +557,19 @@ proc0_post(void *dummy __unused) } SYSINIT(p0post, SI_SUB_INTRINSIC_POST, SI_ORDER_FIRST, proc0_post, NULL); +static void +random_init(void *dummy __unused) +{ + + /* + * After CPU has been started we have some randomness on most + * platforms via get_cyclecount(). For platforms that don't + * we will reseed random(9) in proc0_post() as well. + */ + srandom(get_cyclecount()); +} +SYSINIT(random, SI_SUB_RANDOM, SI_ORDER_FIRST, random_init, NULL); + /* *************************************************************************** **** diff --git a/sys/kern/stack_protector.c b/sys/kern/stack_protector.c index 554d47d0a833..b5f9973e24cf 100644 --- a/sys/kern/stack_protector.c +++ b/sys/kern/stack_protector.c @@ -28,5 +28,4 @@ __stack_chk_init(void *dummy __unused) for (i = 0; i < __arraycount(guard); i++) __stack_chk_guard[i] = guard[i]; } -/* SI_SUB_EVENTHANDLER is right after SI_SUB_LOCK used by arc4rand() init. */ -SYSINIT(stack_chk, SI_SUB_EVENTHANDLER, SI_ORDER_ANY, __stack_chk_init, NULL); +SYSINIT(stack_chk, SI_SUB_RANDOM, SI_ORDER_ANY, __stack_chk_init, NULL); diff --git a/sys/sys/kernel.h b/sys/sys/kernel.h index 5461dfd2b96e..1a9cb5cd003d 100644 --- a/sys/sys/kernel.h +++ b/sys/sys/kernel.h @@ -109,6 +109,7 @@ enum sysinit_sub_id { SI_SUB_VNET_PRELINK = 0x1E00000, /* vnet init before modules */ SI_SUB_KLD = 0x2000000, /* KLD and module setup */ SI_SUB_CPU = 0x2100000, /* CPU resource(s)*/ + SI_SUB_RANDOM = 0x2120000, /* random number generator */ SI_SUB_KDTRACE = 0x2140000, /* Kernel dtrace hooks */ SI_SUB_MAC = 0x2180000, /* TrustedBSD MAC subsystem */ SI_SUB_MAC_POLICY = 0x21C0000, /* TrustedBSD MAC policies */ |
