diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2017-06-08 02:05:02 +0200 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2017-06-20 04:06:28 +0200 |
commit | da9ba564bd683374b8d319756f312821b8265b06 (patch) | |
tree | 14608d249e7d2a5cd33b5ec86e28943330f74608 /include/linux/random.h | |
parent | random: add wait_for_random_bytes() API (diff) | |
download | linux-da9ba564bd683374b8d319756f312821b8265b06.tar.xz linux-da9ba564bd683374b8d319756f312821b8265b06.zip |
random: add get_random_{bytes,u32,u64,int,long,once}_wait family
These functions are simple convenience wrappers that call
wait_for_random_bytes before calling the respective get_random_*
function.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Diffstat (limited to '')
-rw-r--r-- | include/linux/random.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/include/linux/random.h b/include/linux/random.h index e29929347c95..4aecc339558d 100644 --- a/include/linux/random.h +++ b/include/linux/random.h @@ -58,6 +58,31 @@ static inline unsigned long get_random_long(void) #endif } +/* Calls wait_for_random_bytes() and then calls get_random_bytes(buf, nbytes). + * Returns the result of the call to wait_for_random_bytes. */ +static inline int get_random_bytes_wait(void *buf, int nbytes) +{ + int ret = wait_for_random_bytes(); + if (unlikely(ret)) + return ret; + get_random_bytes(buf, nbytes); + return 0; +} + +#define declare_get_random_var_wait(var) \ + static inline int get_random_ ## var ## _wait(var *out) { \ + int ret = wait_for_random_bytes(); \ + if (unlikely(ret)) \ + return ret; \ + *out = get_random_ ## var(); \ + return 0; \ + } +declare_get_random_var_wait(u32) +declare_get_random_var_wait(u64) +declare_get_random_var_wait(int) +declare_get_random_var_wait(long) +#undef declare_get_random_var + unsigned long randomize_page(unsigned long start, unsigned long range); u32 prandom_u32(void); |