Skip to contentSkip to conversation

Patch "x86/elf: Remove the unnecessary ADDR_NO_RANDOMIZE checks" has been added to the 4.12-stable tree

PATCH [email protected] 2 participants 4 messages Aug 20, 2017 – Aug 23, 2017

Subsystems (5)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

x86/elf: Remove the unnecessary ADDR_NO_RANDOMIZE checks

to the 4.12-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
x86-elf-remove-the-unnecessary-addr_no_randomize-checks.patch
and it can be found in the queue-4.12 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 01578e36163cdd0e4fd61d9976de15f13364e26d Mon Sep 17 00:00:00 2001

From: Oleg Nesterov <[email protected]>
Date: Tue, 15 Aug 2017 17:40:11 +0200
Subject: x86/elf: Remove the unnecessary ADDR_NO_RANDOMIZE checks

From: Oleg Nesterov <[email protected]>

commit 01578e36163cdd0e4fd61d9976de15f13364e26d upstream.

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.

---
 arch/x86/mm/mmap.c |    3 +--
 fs/binfmt_elf.c    |    3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)
arch/x86/mm/mmap.c +1 -2
@@ -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;
 	}
fs/binfmt_elf.c +1 -2
@@ -666,8 +666,7 @@ static unsigned long randomize_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;

Patches currently in stable-queue which might be from [email protected] are

queue-4.12/x86-elf-remove-the-unnecessary-addr_no_randomize-checks.patch queue-4.12/mm-fix-double-mmap_sem-unlock-on-mmf_unstable-enforced-sigbus.patch queue-4.12/x86-fix-norandmaps-addr_no_randomize.patch

#1 lore raw
Quoted 3 lines · On 08/20, [email protected] wrote:

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Yes, I think this is not -stable material, this is really minor cleanup.

Quoted 62 lines

From 01578e36163cdd0e4fd61d9976de15f13364e26d Mon Sep 17 00:00:00 2001
From: Oleg Nesterov <[email protected]>
Date: Tue, 15 Aug 2017 17:40:11 +0200
Subject: x86/elf: Remove the unnecessary ADDR_NO_RANDOMIZE checks

From: Oleg Nesterov <[email protected]>

commit 01578e36163cdd0e4fd61d9976de15f13364e26d upstream.

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.

---
 arch/x86/mm/mmap.c |    3 +--
 fs/binfmt_elf.c    |    3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)
arch/x86/mm/mmap.c +1 -2
@@ -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;
 	}
fs/binfmt_elf.c +1 -2
@@ -666,8 +666,7 @@ static unsigned long randomize_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;

Patches currently in stable-queue which might be from [email protected] are

queue-4.12/x86-elf-remove-the-unnecessary-addr_no_randomize-checks.patch queue-4.12/mm-fix-double-mmap_sem-unlock-on-mmf_unstable-enforced-sigbus.patch queue-4.12/x86-fix-norandmaps-addr_no_randomize.patch

author maintainer
#2 lore raw
Quoted 6 lines · Oleg Nesterov
Quoted 3 lines · On 08/20, [email protected] wrote:

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Yes, I think this is not -stable material, this is really minor cleanup.

But I'm pretty sure it is needed for the patch after this one in the series, right?

thanks,

greg k-h

#3 lore raw
Quoted 11 lines · Greg KH
Quoted 6 lines · Oleg Nesterov
Quoted 3 lines · On 08/20, [email protected] wrote:

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Yes, I think this is not -stable material, this is really minor cleanup.

But I'm pretty sure it is needed for the patch after this one in the series, right?

Confused... it was 2/2, afaics nothing depends on this change. In particular, 1/2 47ac5484fd961420e5ec0bb5b972fde381f57365 ("x86: Fix norandmaps/ADDR_NO_RANDOMIZE") doesn't depend.

Nevermind, if you have already applied this cleanup it should not hurt, it is very simple and hopefully "obviously correct".

Oleg.