From: Stephan Mueller <smueller@chronox.de>
To: Ted Tso <tytso@mit.edu>, herbert@gondor.apana.org.au
Cc: linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org,
sandyinchina@gmail.com
Subject: [PATCH 2/6] random: conditionally compile code depending on LRNG
Date: Thu, 21 Apr 2016 11:13:07 +0200 [thread overview]
Message-ID: <5202736.GT8q85Pisd@positron.chronox.de> (raw)
In-Reply-To: <9192755.iDgo3Omyqe@positron.chronox.de>
When selecting the LRNG for compilation, disable the legacy /dev/random
implementation.
The LRNG is a drop-in replacement for the legacy /dev/random which
implements the same in-kernel and user space API. Only the hooks of
/dev/random into other parts of the kernel need to be disabled.
Signed-off-by: Stephan Mueller <smueller@chronox.de>
---
drivers/char/random.c | 8 ++++++++
include/linux/genhd.h | 5 +++++
include/linux/random.h | 8 ++++++++
3 files changed, 21 insertions(+)
diff --git a/drivers/char/random.c b/drivers/char/random.c
index b583e53..92c2174 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -267,6 +267,8 @@
#include <asm/irq_regs.h>
#include <asm/io.h>
+#ifndef CONFIG_CRYPTO_LRNG
+
#define CREATE_TRACE_POINTS
#include <trace/events/random.h>
@@ -1620,6 +1622,7 @@ SYSCALL_DEFINE3(getrandom, char __user *, buf, size_t, count,
}
return urandom_read(NULL, buf, count, NULL);
}
+#endif /* CONFIG_CRYPTO_LRNG */
/***************************************************************
* Random UUID interface
@@ -1647,6 +1650,7 @@ EXPORT_SYMBOL(generate_random_uuid);
*
********************************************************************/
+#ifndef CONFIG_CRYPTO_LRNG
#ifdef CONFIG_SYSCTL
#include <linux/sysctl.h>
@@ -1784,6 +1788,8 @@ struct ctl_table random_table[] = {
};
#endif /* CONFIG_SYSCTL */
+#endif /* CONFIG_CRYPTO_LRNG */
+
static u32 random_int_secret[MD5_MESSAGE_BYTES / 4] ____cacheline_aligned;
int random_int_secret_init(void)
@@ -1859,6 +1865,7 @@ randomize_range(unsigned long start, unsigned long end, unsigned long len)
return PAGE_ALIGN(get_random_int() % range + start);
}
+#ifndef CONFIG_CRYPTO_LRNG
/* Interface for in-kernel drivers of true hardware RNGs.
* Those devices may produce endless random bits and will be throttled
* when our pool is full.
@@ -1878,3 +1885,4 @@ void add_hwgenerator_randomness(const char *buffer, size_t count,
credit_entropy_bits(poolp, entropy);
}
EXPORT_SYMBOL_GPL(add_hwgenerator_randomness);
+#endif /* CONFIG_CRYPTO_LRNG */
diff --git a/include/linux/genhd.h b/include/linux/genhd.h
index 5c70676..962c82f 100644
--- a/include/linux/genhd.h
+++ b/include/linux/genhd.h
@@ -450,8 +450,13 @@ extern void disk_flush_events(struct gendisk *disk, unsigned int mask);
extern unsigned int disk_clear_events(struct gendisk *disk, unsigned int mask);
/* drivers/char/random.c */
+#ifdef CONFIG_CRYPTO_LRNG
+#define add_disk_randomness(disk) do {} while (0)
+#define rand_initialize_disk(disk) do {} while (0)
+#else
extern void add_disk_randomness(struct gendisk *disk);
extern void rand_initialize_disk(struct gendisk *disk);
+#endif
static inline sector_t get_start_sect(struct block_device *bdev)
{
diff --git a/include/linux/random.h b/include/linux/random.h
index 9c29122..5527bab 100644
--- a/include/linux/random.h
+++ b/include/linux/random.h
@@ -17,10 +17,18 @@ struct random_ready_callback {
struct module *owner;
};
+#ifdef CONFIG_CRYPTO_LRNG
+#define add_device_randomness(buf, nbytes) do {} while (0)
+#define add_input_randomness(type, code, value) do {} while (0)
+#define add_interrupt_randomness(irq, irq_flags) do {} while (0)
+extern void lrng_irq_process(void);
+#else /* CONFIG_CRYPTO_LRNG */
extern void add_device_randomness(const void *, unsigned int);
extern void add_input_randomness(unsigned int type, unsigned int code,
unsigned int value);
extern void add_interrupt_randomness(int irq, int irq_flags);
+#define lrng_irq_process()
+#endif /* CONFIG_CRYPTO_LRNG */
extern void get_random_bytes(void *buf, int nbytes);
extern int add_random_ready_callback(struct random_ready_callback *rdy);
--
2.5.5
next prev parent reply other threads:[~2016-04-21 9:13 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-21 9:11 [RFC][PATCH 0/6] /dev/random - a new approach Stephan Mueller
2016-04-21 9:12 ` [PATCH 1/6] crypto: DRBG - externalize DRBG functions for LRNG Stephan Mueller
2016-04-21 9:13 ` Stephan Mueller [this message]
2016-04-21 9:13 ` [PATCH 3/6] crypto: Linux Random Number Generator Stephan Mueller
2016-04-21 9:14 ` [PATCH 4/6] crypto: LRNG - enable compile Stephan Mueller
2016-04-21 9:14 ` [PATCH 5/6] crypto: LRNG - hook LRNG into interrupt handler Stephan Mueller
2016-04-21 9:16 ` [PATCH 6/6] hyperv IRQ handler: trigger LRNG Stephan Mueller
2016-04-21 13:03 ` [RFC][PATCH 0/6] /dev/random - a new approach Nikos Mavrogiannopoulos
2016-04-21 13:09 ` Stephan Mueller
2016-04-21 15:16 ` Stephan Mueller
2016-04-25 7:55 ` Nikos Mavrogiannopoulos
2016-04-25 8:02 ` Stephan Mueller
2016-04-25 8:23 ` Nikos Mavrogiannopoulos
2016-04-26 1:11 ` Theodore Ts'o
2016-05-03 13:57 ` Nikos Mavrogiannopoulos
2016-05-03 14:48 ` tytso
2016-05-03 16:20 ` Nikos Mavrogiannopoulos
2016-05-03 15:01 ` Austin S. Hemmelgarn
2016-04-22 2:51 ` Theodore Ts'o
2016-04-22 4:59 ` Stephan Mueller
2016-04-22 13:09 ` Sandy Harris
2016-04-24 15:21 ` Pavel Machek
2016-04-24 17:32 ` Stephan Mueller
2016-04-24 21:25 ` Pavel Machek
2016-04-25 5:12 ` Stephan Mueller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5202736.GT8q85Pisd@positron.chronox.de \
--to=smueller@chronox.de \
--cc=herbert@gondor.apana.org.au \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sandyinchina@gmail.com \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.