summaryrefslogtreecommitdiff
path: root/crypto
diff options
context:
space:
mode:
Diffstat (limited to 'crypto')
-rw-r--r--crypto/drbg.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/crypto/drbg.c b/crypto/drbg.c
index 3132967a1749..19ea8d6628ff 100644
--- a/crypto/drbg.c
+++ b/crypto/drbg.c
@@ -1490,12 +1490,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)
@@ -1510,10 +1511,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:
@@ -1524,7 +1523,7 @@ static int drbg_prepare_hrng(struct drbg_state *drbg)
fallthrough;
default:
- drbg->random_ready.func = NULL;
+ drbg->random_ready.notifier_call = NULL;
return err;
}
@@ -1628,8 +1627,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);
}