From: Emese Revfy <re.emese@gmail.com>
To: kernel-hardening@lists.openwall.com
Cc: pageexec@freemail.hu, spender@grsecurity.net, mmarek@suse.com,
keescook@chromium.org, linux-kernel@vger.kernel.org,
yamada.masahiro@socionext.com, linux-kbuild@vger.kernel.org,
tytso@mit.edu, akpm@linux-foundation.org, linux-mm@kvack.org,
axboe@kernel.dk, viro@zeniv.linux.org.uk,
paulmck@linux.vnet.ibm.com, mingo@redhat.com, tglx@linutronix.de,
bart.vanassche@sandisk.com, davem@davemloft.net
Subject: [PATCH v4 0/4] Introduce the latent_entropy gcc plugin
Date: Mon, 20 Jun 2016 20:39:10 +0200 [thread overview]
Message-ID: <20160620203910.a8b6b5b10d18f24661916e7b@gmail.com> (raw)
I would like to introduce the latent_entropy gcc plugin. This plugin
mitigates the problem of the kernel having too little entropy during and
after boot for generating crypto keys.
This plugin mixes random values into the latent_entropy global variable
in functions marked by the __latent_entropy attribute.
The value of this global variable is added to the kernel entropy pool
to increase the entropy.
It is a CII project supported by the Linux Foundation.
The latent_entropy plugin was ported from grsecurity/PaX originally written
by the PaX Team. You can find more about the plugin here:
https://grsecurity.net/pipermail/grsecurity/2012-July/001093.html
The plugin supports all gcc version from 4.5 to 6.0.
I do some changes above the PaX version. The important one is mixing
the stack pointer into the global variable too.
You can find more about the changes here:
https://github.com/ephox-gcc-plugins/latent_entropy
This patch set is based on the "Introduce GCC plugin infrastructure"
patch set (git/mmarek/kbuild.git#kbuild HEAD: 543c37cb165049c3be).
Emese Revfy (4):
Add support for passing gcc plugin arguments
Add the latent_entropy gcc plugin
Mark functions with the latent_entropy attribute
Add the extra_latent_entropy kernel parameter
Changes from v3:
* Fix disabling latent_entropy on some powerpc files
(Reported-by: Kees Cook <keescook@chromium.org>)
* Truncate the lines into <= 80 columns to follow the kernel coding style
(Suggested-by: Kees Cook <keescook@chromium.org>)
Changes from v2:
* Moved the passing of gcc plugin arguments into a separate patch
(Suggested-by: Kees Cook <keescook@chromium.org>)
* Mix the global entropy variable with the stack pointer
(latent_entropy_plugin.c)
* Handle tail calls (latent_entropy_plugin.c)
* Fix some indentation related warnings suggested by checkpatch.pl
(latent_entropy_plugin.c)
* Commented some latent_entropy plugin code
(Suggested-by: Kees Cook <keescook@chromium.org>)
Changes from v1:
* Remove unnecessary ifdefs
(Suggested-by: Kees Cook <keescook@chromium.org>)
* Separate the two definitions of add_latent_entropy()
(Suggested-by: Kees Cook <keescook@chromium.org>)
* Removed unnecessary global variable (latent_entropy_plugin.c)
* About the latent_entropy gcc attribute (latent_entropy_plugin.c)
* Measure the boot time performance impact of the latent_entropy plugin
(arch/Kconfig)
---
Documentation/kernel-parameters.txt | 5 +
arch/Kconfig | 23 +
arch/powerpc/kernel/Makefile | 4 +
block/blk-softirq.c | 2 +-
drivers/char/random.c | 6 +-
fs/namespace.c | 1 +
include/linux/compiler-gcc.h | 7 +
include/linux/compiler.h | 4 +
include/linux/fdtable.h | 2 +-
include/linux/genhd.h | 2 +-
include/linux/init.h | 5 +-
include/linux/random.h | 14 +-
init/main.c | 1 +
kernel/fork.c | 7 +-
kernel/rcu/tiny.c | 2 +-
kernel/rcu/tree.c | 2 +-
kernel/sched/fair.c | 2 +-
kernel/softirq.c | 4 +-
kernel/time/timer.c | 2 +-
lib/irq_poll.c | 2 +-
lib/random32.c | 2 +-
mm/page_alloc.c | 31 ++
net/core/dev.c | 4 +-
scripts/Makefile.gcc-plugins | 10 +-
scripts/gcc-plugins/Makefile | 1 +
scripts/gcc-plugins/latent_entropy_plugin.c | 639 ++++++++++++++++++++++++++++
26 files changed, 760 insertions(+), 24 deletions(-)
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next reply other threads:[~2016-06-20 18:32 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-20 18:39 Emese Revfy [this message]
2016-06-20 18:40 ` [PATCH v4 1/4] Add support for passing gcc plugin arguments Emese Revfy
2016-06-20 18:41 ` [PATCH v4 2/4] Add the latent_entropy gcc plugin Emese Revfy
2016-06-21 12:58 ` Christoph Hellwig
2016-06-21 16:13 ` Kees Cook
2016-06-20 18:42 ` [PATCH v4 3/4] Mark functions with the latent_entropy attribute Emese Revfy
2016-06-20 18:43 ` [PATCH v4 4/4] Add the extra_latent_entropy kernel parameter Emese Revfy
2016-06-21 18:40 ` [PATCH v4 0/4] Introduce the latent_entropy gcc plugin Kees Cook
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=20160620203910.a8b6b5b10d18f24661916e7b@gmail.com \
--to=re.emese@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=axboe@kernel.dk \
--cc=bart.vanassche@sandisk.com \
--cc=davem@davemloft.net \
--cc=keescook@chromium.org \
--cc=kernel-hardening@lists.openwall.com \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mingo@redhat.com \
--cc=mmarek@suse.com \
--cc=pageexec@freemail.hu \
--cc=paulmck@linux.vnet.ibm.com \
--cc=spender@grsecurity.net \
--cc=tglx@linutronix.de \
--cc=tytso@mit.edu \
--cc=viro@zeniv.linux.org.uk \
--cc=yamada.masahiro@socionext.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).