On Wed, Oct 18, 2017 at 10:49 PM, Jason A. Donenfeld <ja...@zx2c4.com> wrote: > static void fill_random_ptr_key(struct random_ready_callback *rdy) > { > get_random_bytes(&ptr_secret, sizeof(ptr_secret)); > static_branch_disable(&no_ptr_secret); > } > > static struct random_ready_callback random_ready = { > .func = fill_random_ptr_key > }; > > static int __init initialize_ptr_random(void) > { > int ret = add_random_ready_callback(&random_ready); > > if (!ret) > return 0; > else if (ret == -EALREADY) { > fill_random_ptr_key(&random_ready); > return 0; > } > > return ret; > } > early_initcall(initialize_ptr_random);
Tangent: why is the random_ready API designed with -EALREADY? Couldn't add_random_ready_callback() just perform the call itself and avoid needing all the callers to check for -EALREADY? -Kees -- Kees Cook Pixel Security