summaryrefslogtreecommitdiff
path: root/crypto/drbg.c
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/drbg.c')
-rw-r--r--crypto/drbg.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/crypto/drbg.c b/crypto/drbg.c
index 04379ca6..7c8d9ac9 100644
--- a/crypto/drbg.c
+++ b/crypto/drbg.c
@@ -1478,12 +1478,13 @@ static int drbg_generate_long(struct drbg_state *drbg,
return 0;
}
-static void drbg_schedule_async_seed(struct random_ready_callback *rdy)
+static int drbg_schedule_async_seed(struct notifier_block *nb, unsigned long action, void *data)
{
- struct drbg_state *drbg = container_of(rdy, struct drbg_state,
+ struct drbg_state *drbg = container_of(nb, struct drbg_state,
random_ready);
schedule_work(&drbg->seed_work);
+ return 0;
}
static int drbg_prepare_hrng(struct drbg_state *drbg)
@@ -1496,10 +1497,8 @@ static int drbg_prepare_hrng(struct drbg_state *drbg)
INIT_WORK(&drbg->seed_work, drbg_async_seed);
- drbg->random_ready.owner = THIS_MODULE;
- drbg->random_ready.func = drbg_schedule_async_seed;
-
- err = add_random_ready_callback(&drbg->random_ready);
+ drbg->random_ready.notifier_call = drbg_schedule_async_seed;
+ err = register_random_ready_notifier(&drbg->random_ready);
switch (err) {
case 0:
@@ -1510,7 +1509,7 @@ static int drbg_prepare_hrng(struct drbg_state *drbg)
/* fall through */
default:
- drbg->random_ready.func = NULL;
+ drbg->random_ready.notifier_call = NULL;
return err;
}
@@ -1616,8 +1615,8 @@ free_everything:
*/
static int drbg_uninstantiate(struct drbg_state *drbg)
{
- if (drbg->random_ready.func) {
- del_random_ready_callback(&drbg->random_ready);
+ if (drbg->random_ready.notifier_call) {
+ unregister_random_ready_notifier(&drbg->random_ready);
cancel_work_sync(&drbg->seed_work);
crypto_free_rng(drbg->jent);
drbg->jent = NULL;