* [PATCH v2 0/2] x86: fix norandmaps/ADDR_NO_RANDOMIZE
@ 2017-08-15 15:39 Oleg Nesterov
2017-08-15 15:39 ` [PATCH v2 1/2] " Oleg Nesterov
2017-08-15 15:40 ` [PATCH v2 2/2] x86/elf: remove the unnecessary ADDR_NO_RANDOMIZE checks in stack_maxrandom_size() and randomize_stack_top() Oleg Nesterov
0 siblings, 2 replies; 5+ messages in thread
From: Oleg Nesterov @ 2017-08-15 15:39 UTC (permalink / raw)
To: Andrew Morton
Cc: Andy Lutomirski, Borislav Petkov, Dmitry Safonov, H. Peter Anvin,
Ingo Molnar, Kirill A. Shutemov, Linus Torvalds, Thomas Gleixner,
linux-kernel, x86, stable
v2:
- mention ADDR_NO_RANDOMIZE in subect/changelog
- add the acks
Oleg.
arch/x86/mm/mmap.c | 7 +++----
fs/binfmt_elf.c | 3 +--
2 files changed, 4 insertions(+), 6 deletions(-)
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 1/2] x86: fix norandmaps/ADDR_NO_RANDOMIZE
2017-08-15 15:39 [PATCH v2 0/2] x86: fix norandmaps/ADDR_NO_RANDOMIZE Oleg Nesterov
@ 2017-08-15 15:39 ` Oleg Nesterov
2017-08-16 18:36 ` [tip:x86/urgent] x86: Fix norandmaps/ADDR_NO_RANDOMIZE tip-bot for Oleg Nesterov
2017-08-15 15:40 ` [PATCH v2 2/2] x86/elf: remove the unnecessary ADDR_NO_RANDOMIZE checks in stack_maxrandom_size() and randomize_stack_top() Oleg Nesterov
1 sibling, 1 reply; 5+ messages in thread
From: Oleg Nesterov @ 2017-08-15 15:39 UTC (permalink / raw)
To: Andrew Morton
Cc: Andy Lutomirski, Borislav Petkov, Dmitry Safonov, H. Peter Anvin,
Ingo Molnar, Kirill A. Shutemov, Linus Torvalds, Thomas Gleixner,
linux-kernel, x86, stable
Documentation/admin-guide/kernel-parameters.txt says:
norandmaps Don't use address space randomization. Equivalent
to echo 0 > /proc/sys/kernel/randomize_va_space
but it doesn't work because arch_rnd() which is used to randomize
mm->mmap_base returns a random value unconditionally. And as Kirill
pointed out, ADDR_NO_RANDOMIZE is broken by the same reason.
Just shift the PF_RANDOMIZE check from arch_mmap_rnd() to arch_rnd().
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Acked-by: Cyrill Gorcunov <gorcunov@openvz.org>
Fixes: 1b028f784e8c ("x86/mm: Introduce mmap_compat_base() for 32-bit mmap()")
Cc: stable <stable@vger.kernel.org> [4.12+]
---
arch/x86/mm/mmap.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c
index 229d04a..c94df12 100644
--- a/arch/x86/mm/mmap.c
+++ b/arch/x86/mm/mmap.c
@@ -79,13 +79,13 @@ static int mmap_is_legacy(void)
static unsigned long arch_rnd(unsigned int rndbits)
{
+ if (!(current->flags & PF_RANDOMIZE))
+ return 0;
return (get_random_long() & ((1UL << rndbits) - 1)) << PAGE_SHIFT;
}
unsigned long arch_mmap_rnd(void)
{
- if (!(current->flags & PF_RANDOMIZE))
- return 0;
return arch_rnd(mmap_is_ia32() ? mmap32_rnd_bits : mmap64_rnd_bits);
}
--
2.5.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [tip:x86/urgent] x86: Fix norandmaps/ADDR_NO_RANDOMIZE
2017-08-15 15:39 ` [PATCH v2 1/2] " Oleg Nesterov
@ 2017-08-16 18:36 ` tip-bot for Oleg Nesterov
0 siblings, 0 replies; 5+ messages in thread
From: tip-bot for Oleg Nesterov @ 2017-08-16 18:36 UTC (permalink / raw)
To: linux-tip-commits
Cc: linux-kernel, kirill.shutemov, hpa, oleg, tglx, akpm, gorcunov,
luto, torvalds, mingo, bp, dsafonov
Commit-ID: 47ac5484fd961420e5ec0bb5b972fde381f57365
Gitweb: http://git.kernel.org/tip/47ac5484fd961420e5ec0bb5b972fde381f57365
Author: Oleg Nesterov <oleg@redhat.com>
AuthorDate: Tue, 15 Aug 2017 17:39:52 +0200
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitDate: Wed, 16 Aug 2017 20:32:01 +0200
x86: Fix norandmaps/ADDR_NO_RANDOMIZE
Documentation/admin-guide/kernel-parameters.txt says:
norandmaps Don't use address space randomization. Equivalent
to echo 0 > /proc/sys/kernel/randomize_va_space
but it doesn't work because arch_rnd() which is used to randomize
mm->mmap_base returns a random value unconditionally. And as Kirill
pointed out, ADDR_NO_RANDOMIZE is broken by the same reason.
Just shift the PF_RANDOMIZE check from arch_mmap_rnd() to arch_rnd().
Fixes: 1b028f784e8c ("x86/mm: Introduce mmap_compat_base() for 32-bit mmap()")
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Acked-by: Cyrill Gorcunov <gorcunov@openvz.org>
Reviewed-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Cc: stable@vger.kernel.org
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Borislav Petkov <bp@suse.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/20170815153952.GA1076@redhat.com
---
arch/x86/mm/mmap.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c
index 229d04a..c94df12 100644
--- a/arch/x86/mm/mmap.c
+++ b/arch/x86/mm/mmap.c
@@ -79,13 +79,13 @@ static int mmap_is_legacy(void)
static unsigned long arch_rnd(unsigned int rndbits)
{
+ if (!(current->flags & PF_RANDOMIZE))
+ return 0;
return (get_random_long() & ((1UL << rndbits) - 1)) << PAGE_SHIFT;
}
unsigned long arch_mmap_rnd(void)
{
- if (!(current->flags & PF_RANDOMIZE))
- return 0;
return arch_rnd(mmap_is_ia32() ? mmap32_rnd_bits : mmap64_rnd_bits);
}
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v2 2/2] x86/elf: remove the unnecessary ADDR_NO_RANDOMIZE checks in stack_maxrandom_size() and randomize_stack_top()
2017-08-15 15:39 [PATCH v2 0/2] x86: fix norandmaps/ADDR_NO_RANDOMIZE Oleg Nesterov
2017-08-15 15:39 ` [PATCH v2 1/2] " Oleg Nesterov
@ 2017-08-15 15:40 ` Oleg Nesterov
2017-08-16 18:37 ` [tip:x86/urgent] x86/elf: Remove the unnecessary ADDR_NO_RANDOMIZE checks tip-bot for Oleg Nesterov
1 sibling, 1 reply; 5+ messages in thread
From: Oleg Nesterov @ 2017-08-15 15:40 UTC (permalink / raw)
To: Andrew Morton
Cc: Andy Lutomirski, Borislav Petkov, Dmitry Safonov, H. Peter Anvin,
Ingo Molnar, Kirill A. Shutemov, Linus Torvalds, Thomas Gleixner,
linux-kernel, x86, stable
PF_RANDOMIZE is set by load_elf_binary() only if ADDR_NO_RANDOMIZE is not
set, no need to re-check after that.
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: Dmitry Safonov <dsafonov@virtuozzo.com>
---
arch/x86/mm/mmap.c | 3 +--
fs/binfmt_elf.c | 3 +--
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c
index c94df12..a88cfbf 100644
--- a/arch/x86/mm/mmap.c
+++ b/arch/x86/mm/mmap.c
@@ -50,8 +50,7 @@ unsigned long tasksize_64bit(void)
static unsigned long stack_maxrandom_size(unsigned long task_size)
{
unsigned long max = 0;
- if ((current->flags & PF_RANDOMIZE) &&
- !(current->personality & ADDR_NO_RANDOMIZE)) {
+ if (current->flags & PF_RANDOMIZE) {
max = (-1UL) & __STACK_RND_MASK(task_size == tasksize_32bit());
max <<= PAGE_SHIFT;
}
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index 879ff9c..6466153 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -664,8 +664,7 @@ static unsigned long randomize_stack_top(unsigned long stack_top)
{
unsigned long random_variable = 0;
- if ((current->flags & PF_RANDOMIZE) &&
- !(current->personality & ADDR_NO_RANDOMIZE)) {
+ if (current->flags & PF_RANDOMIZE) {
random_variable = get_random_long();
random_variable &= STACK_RND_MASK;
random_variable <<= PAGE_SHIFT;
--
2.5.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* [tip:x86/urgent] x86/elf: Remove the unnecessary ADDR_NO_RANDOMIZE checks
2017-08-15 15:40 ` [PATCH v2 2/2] x86/elf: remove the unnecessary ADDR_NO_RANDOMIZE checks in stack_maxrandom_size() and randomize_stack_top() Oleg Nesterov
@ 2017-08-16 18:37 ` tip-bot for Oleg Nesterov
0 siblings, 0 replies; 5+ messages in thread
From: tip-bot for Oleg Nesterov @ 2017-08-16 18:37 UTC (permalink / raw)
To: linux-tip-commits
Cc: hpa, tglx, luto, dsafonov, linux-kernel, akpm, torvalds, oleg,
mingo, kirill.shutemov, bp
Commit-ID: 01578e36163cdd0e4fd61d9976de15f13364e26d
Gitweb: http://git.kernel.org/tip/01578e36163cdd0e4fd61d9976de15f13364e26d
Author: Oleg Nesterov <oleg@redhat.com>
AuthorDate: Tue, 15 Aug 2017 17:40:11 +0200
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitDate: Wed, 16 Aug 2017 20:32:02 +0200
x86/elf: Remove the unnecessary ADDR_NO_RANDOMIZE checks
The ADDR_NO_RANDOMIZE checks in stack_maxrandom_size() and
randomize_stack_top() are not required.
PF_RANDOMIZE is set by load_elf_binary() only if ADDR_NO_RANDOMIZE is not
set, no need to re-check after that.
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Cc: stable@vger.kernel.org
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Borislav Petkov <bp@suse.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Link: http://lkml.kernel.org/r/20170815154011.GB1076@redhat.com
---
arch/x86/mm/mmap.c | 3 +--
fs/binfmt_elf.c | 3 +--
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c
index c94df12..a88cfbf 100644
--- a/arch/x86/mm/mmap.c
+++ b/arch/x86/mm/mmap.c
@@ -50,8 +50,7 @@ unsigned long tasksize_64bit(void)
static unsigned long stack_maxrandom_size(unsigned long task_size)
{
unsigned long max = 0;
- if ((current->flags & PF_RANDOMIZE) &&
- !(current->personality & ADDR_NO_RANDOMIZE)) {
+ if (current->flags & PF_RANDOMIZE) {
max = (-1UL) & __STACK_RND_MASK(task_size == tasksize_32bit());
max <<= PAGE_SHIFT;
}
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index 879ff9c..6466153 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -664,8 +664,7 @@ static unsigned long randomize_stack_top(unsigned long stack_top)
{
unsigned long random_variable = 0;
- if ((current->flags & PF_RANDOMIZE) &&
- !(current->personality & ADDR_NO_RANDOMIZE)) {
+ if (current->flags & PF_RANDOMIZE) {
random_variable = get_random_long();
random_variable &= STACK_RND_MASK;
random_variable <<= PAGE_SHIFT;
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-08-16 18:40 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-08-15 15:39 [PATCH v2 0/2] x86: fix norandmaps/ADDR_NO_RANDOMIZE Oleg Nesterov
2017-08-15 15:39 ` [PATCH v2 1/2] " Oleg Nesterov
2017-08-16 18:36 ` [tip:x86/urgent] x86: Fix norandmaps/ADDR_NO_RANDOMIZE tip-bot for Oleg Nesterov
2017-08-15 15:40 ` [PATCH v2 2/2] x86/elf: remove the unnecessary ADDR_NO_RANDOMIZE checks in stack_maxrandom_size() and randomize_stack_top() Oleg Nesterov
2017-08-16 18:37 ` [tip:x86/urgent] x86/elf: Remove the unnecessary ADDR_NO_RANDOMIZE checks tip-bot for Oleg Nesterov
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.