From b5cbe7f9085cc03768ecdaa0416d95167b8f7a03 Mon Sep 17 00:00:00 2001 From: Taylor R Campbell Date: Mon, 9 Dec 2019 15:54:20 +0000 Subject: [PATCH 4/4] Count cprng_fast reseed events. --- sys/crypto/cprng_fast/cprng_fast.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/sys/crypto/cprng_fast/cprng_fast.c b/sys/crypto/cprng_fast/cprng_fast.c index 5dc17506fa6f..438fd6ecbc6b 100644 --- a/sys/crypto/cprng_fast/cprng_fast.c +++ b/sys/crypto/cprng_fast/cprng_fast.c @@ -39,6 +39,7 @@ __KERNEL_RCSID(0, "$NetBSD: cprng_fast.c,v 1.13 2015/04/13 22:43:41 riastradh Ex #include #include #include +#include #include /* ChaCha core */ @@ -198,6 +199,7 @@ struct cprng_fast { uint32_t buffer[crypto_core_OUTPUTWORDS]; uint32_t key[crypto_core_KEYWORDS]; uint32_t nonce[crypto_core_INPUTWORDS]; + struct evcnt *reseed_evcnt; unsigned epoch; }; @@ -228,7 +230,7 @@ cprng_fast_init(void) } static void -cprng_fast_init_cpu(void *p, void *arg __unused, struct cpu_info *ci __unused) +cprng_fast_init_cpu(void *p, void *arg __unused, struct cpu_info *ci) { struct cprng_fast *const cprng = p; uint8_t seed[CPRNG_FAST_SEED_BYTES]; @@ -237,6 +239,11 @@ cprng_fast_init_cpu(void *p, void *arg __unused, struct cpu_info *ci __unused) cprng_strong(kern_cprng, seed, sizeof seed, 0); cprng_fast_seed(cprng, seed); (void)explicit_memset(seed, 0, sizeof seed); + + cprng->reseed_evcnt = kmem_alloc(sizeof(*cprng->reseed_evcnt), + KM_SLEEP); + evcnt_attach_dynamic(cprng->reseed_evcnt, EVCNT_TYPE_MISC, NULL, + ci->ci_cpuname, "cprng_fast reseed"); } static inline int @@ -285,6 +292,7 @@ cprng_fast_intr(void *cookie __unused) s = splvm(); cprng_fast_seed(cprng, seed); cprng->epoch = epoch; + cprng->reseed_evcnt->ev_count++; splx(s); percpu_putref(cprng_fast_percpu); -- 2.19.1