diff options
Diffstat (limited to 'usr/src/uts/common/crypto/api/kcf_random.c')
-rw-r--r-- | usr/src/uts/common/crypto/api/kcf_random.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/usr/src/uts/common/crypto/api/kcf_random.c b/usr/src/uts/common/crypto/api/kcf_random.c index ffb2c61e62..efaf5c37d1 100644 --- a/usr/src/uts/common/crypto/api/kcf_random.c +++ b/usr/src/uts/common/crypto/api/kcf_random.c @@ -834,13 +834,22 @@ rnd_alloc_magazines() } } +static void +rnd_mechid(void *notused) +{ + _NOTE(ARGUNUSED(notused)); + rngmech_type = crypto_mech2id(SUN_RANDOM); +} + void kcf_rnd_schedule_timeout(boolean_t do_mech2id) { clock_t ut; /* time in microseconds */ - if (do_mech2id) - rngmech_type = crypto_mech2id(SUN_RANDOM); + if (do_mech2id) { + /* This should never fail due to TQ_SLEEP. */ + (void) taskq_dispatch(system_taskq, rnd_mechid, NULL, TQ_SLEEP); + } /* * The new timeout value is taken from the buffer of random bytes. |