mm: pass correct mm when growing stack
Tetsuo Handa reports seeing the WARN_ON(current->mm == NULL) in security_vm_enough_memory(), when do_execve() is touching the target mm's stack, to set up its args and environment. Yes, a UMH_NO_WAIT or UMH_WAIT_PROC call_usermodehelper() spawns an mm-less kernel thread to do the exec. And in any case, that vm_enough_memory check when growing stack ought to be done on the target mm, not on the execer's mm (though apart from the warning, it only makes a slight tweak to OVERCOMMIT_NEVER behaviour). Reported-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp> Signed-off-by: Hugh Dickins <hugh@veritas.com> Cc: stable@kernel.org Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
05f54c13cd
commit
05fa199d45
1 changed files with 1 additions and 1 deletions
|
@ -1575,7 +1575,7 @@ static int acct_stack_growth(struct vm_area_struct *vma, unsigned long size, uns
|
||||||
* Overcommit.. This must be the final test, as it will
|
* Overcommit.. This must be the final test, as it will
|
||||||
* update security statistics.
|
* update security statistics.
|
||||||
*/
|
*/
|
||||||
if (security_vm_enough_memory(grow))
|
if (security_vm_enough_memory_mm(mm, grow))
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
/* Ok, everything looks good - let it rip */
|
/* Ok, everything looks good - let it rip */
|
||||||
|
|
Loading…
Reference in a new issue