diff options
author | Hannes Frederic Sowa <hannes@stressinduktion.org> | 2015-10-08 01:20:35 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-10-08 05:26:35 -0700 |
commit | 46234253b9363894a254844a6550b4cc5f3edfe8 (patch) | |
tree | ab3b795f7ff1765d2f7dbb318b5fae08945a0bdf /include/linux/once.h | |
parent | 28335a7445202a3d118145a07d9138e9881ebe18 (diff) | |
download | linux-46234253b9363894a254844a6550b4cc5f3edfe8.tar.gz linux-46234253b9363894a254844a6550b4cc5f3edfe8.tar.bz2 linux-46234253b9363894a254844a6550b4cc5f3edfe8.zip |
net: move net_get_random_once to lib
There's no good reason why users outside of networking should not
be using this facility, f.e. for initializing their seeds.
Therefore, make it accessible from there as get_random_once().
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/once.h')
-rw-r--r-- | include/linux/once.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/include/linux/once.h b/include/linux/once.h new file mode 100644 index 000000000000..2a83b538dd6a --- /dev/null +++ b/include/linux/once.h @@ -0,0 +1,24 @@ +#ifndef _LINUX_ONCE_H +#define _LINUX_ONCE_H + +#include <linux/types.h> +#include <linux/jump_label.h> + +bool __get_random_once(void *buf, int nbytes, bool *done, + struct static_key *once_key); + +#define get_random_once(buf, nbytes) \ + ({ \ + bool ___ret = false; \ + static bool ___done = false; \ + static struct static_key ___once_key = \ + STATIC_KEY_INIT_TRUE; \ + if (static_key_true(&___once_key)) \ + ___ret = __get_random_once((buf), \ + (nbytes), \ + &___done, \ + &___once_key); \ + ___ret; \ + }) + +#endif /* _LINUX_ONCE_H */ |