| From 779f4e1c6c7c661db40dfebd6dd6bda7b5f88aa3 Mon Sep 17 00:00:00 2001 |
| From: Kees Cook <keescook@chromium.org> |
| Date: Tue, 12 Dec 2017 11:28:38 -0800 |
| Subject: Revert "exec: avoid RLIMIT_STACK races with prlimit()" |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Kees Cook <keescook@chromium.org> |
| |
| commit 779f4e1c6c7c661db40dfebd6dd6bda7b5f88aa3 upstream. |
| |
| This reverts commit 04e35f4495dd560db30c25efca4eecae8ec8c375. |
| |
| SELinux runs with secureexec for all non-"noatsecure" domain transitions, |
| which means lots of processes end up hitting the stack hard-limit change |
| that was introduced in order to fix a race with prlimit(). That race fix |
| will need to be redesigned. |
| |
| Reported-by: Laura Abbott <labbott@redhat.com> |
| Reported-by: Tomรกลก Trnka <trnka@scm.com> |
| Signed-off-by: Kees Cook <keescook@chromium.org> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/exec.c | 7 +------ |
| 1 file changed, 1 insertion(+), 6 deletions(-) |
| |
| --- a/fs/exec.c |
| +++ b/fs/exec.c |
| @@ -1340,15 +1340,10 @@ void setup_new_exec(struct linux_binprm |
| * avoid bad behavior from the prior rlimits. This has to |
| * happen before arch_pick_mmap_layout(), which examines |
| * RLIMIT_STACK, but after the point of no return to avoid |
| - * races from other threads changing the limits. This also |
| - * must be protected from races with prlimit() calls. |
| + * needing to clean up the change on failure. |
| */ |
| - task_lock(current->group_leader); |
| if (current->signal->rlim[RLIMIT_STACK].rlim_cur > _STK_LIM) |
| current->signal->rlim[RLIMIT_STACK].rlim_cur = _STK_LIM; |
| - if (current->signal->rlim[RLIMIT_STACK].rlim_max > _STK_LIM) |
| - current->signal->rlim[RLIMIT_STACK].rlim_max = _STK_LIM; |
| - task_unlock(current->group_leader); |
| } |
| |
| arch_pick_mmap_layout(current->mm); |