Re: [PATCH v28 11/12] LRNG - add interface for gathering of raw entropy
From: Stephan Mueller <hidden>
Date: 2020-01-16 06:53:49
Also in:
linux-crypto, lkml
Am Donnerstag, 16. Januar 2020, 07:48:20 CET schrieb Randy Dunlap: Hi Randy,
On 1/15/20 10:43 PM, Stephan Mueller wrote:quoted
Am Donnerstag, 16. Januar 2020, 01:18:18 CET schrieb Randy Dunlap: Hi Randy,quoted
On 1/15/20 2:35 AM, Stephan Müller wrote:quoted
CC: "Eric W. Biederman" <redacted> CC: "Alexander E. Patrakov" <redacted> CC: "Ahmed S. Darwish" <redacted> CC: "Theodore Y. Ts'o" <tytso@mit.edu> CC: Willy Tarreau <w@1wt.eu> CC: Matthew Garrett <mjg59@srcf.ucam.org> CC: Vito Caputo <redacted> CC: Andreas Dilger <adilger.kernel@dilger.ca> CC: Jan Kara <jack@suse.cz> CC: Ray Strode <redacted> CC: William Jon McCann <redacted> CC: zhangjs <redacted> CC: Andy Lutomirski <luto@kernel.org> CC: Florian Weimer <redacted> CC: Lennart Poettering <redacted> CC: Nicolai Stange <redacted> Reviewed-by: Roman Drahtmueller <redacted> Tested-by: Roman Drahtmüller <redacted> Tested-by: Marcelo Henrique Cerri <redacted> Tested-by: Neil Horman <redacted> Signed-off-by: Stephan Mueller <redacted> --- drivers/char/lrng/Kconfig | 16 ++ drivers/char/lrng/Makefile | 1 + drivers/char/lrng/lrng_testing.c | 271 +++++++++++++++++++++++++++++++ 3 files changed, 288 insertions(+) create mode 100644 drivers/char/lrng/lrng_testing.cdiff --git a/drivers/char/lrng/lrng_testing.cb/drivers/char/lrng/lrng_testing.c new file mode 100644 index 000000000000..0e287eccd622--- /dev/null +++ b/drivers/char/lrng/lrng_testing.c@@ -0,0 +1,271 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause +/* + * Linux Random Number Generator (LRNG) Raw entropy collection tool + * + * Copyright (C) 2019 - 2020, Stephan Mueller <smueller@chronox.de> + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include <linux/atomic.h> +#include <linux/bug.h> +#include <linux/debugfs.h> +#include <linux/module.h> +#include <linux/sched.h> +#include <linux/sched/signal.h> +#include <linux/slab.h> +#include <linux/string.h> +#include <linux/types.h> +#include <linux/uaccess.h> +#include <linux/workqueue.h> +#include <asm/errno.h> + +#include "lrng_internal.h" + +#define LRNG_TESTING_RINGBUFFER_SIZE 1024 +#define LRNG_TESTING_RINGBUFFER_MASK
(LRNG_TESTING_RINGBUFFER_SIZE - 1)
quoted
quoted
quoted
+ +static u32 lrng_testing_rb[LRNG_TESTING_RINGBUFFER_SIZE]; +static u32 lrng_rb_reader = 0; +static u32 lrng_rb_writer = 0; +static atomic_t lrng_testing_enabled = ATOMIC_INIT(0); + +static DECLARE_WAIT_QUEUE_HEAD(lrng_raw_read_wait); +static DEFINE_SPINLOCK(lrng_raw_lock); + +/* + * 0 ==> No boot test, gathering of runtime data allowed + * 1 ==> Boot test enabled and ready for collecting data, gathering runtime + * data is disabled + * 2 ==> Boot test completed and disabled, gathering of runtime data is + * disabled + */ +static u32 boot_test = 0; +module_param(boot_test, uint, 0644); +MODULE_PARM_DESC(boot_test, "Enable gathering boot time entropy of the first" + " entropy events");One line for the string, please.may I ask the question whether this should be done for all lines with printk statements? As checkpatch.pl will complain if you have lines larger than 80 chars and complains about line-broken printk statements, I am always unsure which way to go. All printk statements in the patch series have line-broken printk statements.It's for grep-ability of the strings. grepping for partial strings would work as is, but then one would need to know what partial string to search for.
Ok, I am changing all these strings to one-liners even though checkpatch.pl will complain. Thank you. Ciao Stephan