summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/crypto/api/kcf_random.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/crypto/api/kcf_random.c')
-rw-r--r--usr/src/uts/common/crypto/api/kcf_random.c13
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.