security: protect from stack expantion into low vm addresses
Add security checks to make sure we are not attempting to expand the stack into memory protected by mmap_min_addr Signed-off-by: Eric Paris <eparis@redhat.com> Signed-off-by: James Morris <jmorris@namei.org>
This commit is contained in:
parent
ab5a91a836
commit
8869477a49
1 changed files with 6 additions and 2 deletions
|
@ -1615,6 +1615,12 @@ static inline int expand_downwards(struct vm_area_struct *vma,
|
||||||
*/
|
*/
|
||||||
if (unlikely(anon_vma_prepare(vma)))
|
if (unlikely(anon_vma_prepare(vma)))
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
address &= PAGE_MASK;
|
||||||
|
error = security_file_mmap(0, 0, 0, 0, address, 1);
|
||||||
|
if (error)
|
||||||
|
return error;
|
||||||
|
|
||||||
anon_vma_lock(vma);
|
anon_vma_lock(vma);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1622,8 +1628,6 @@ static inline int expand_downwards(struct vm_area_struct *vma,
|
||||||
* is required to hold the mmap_sem in read mode. We need the
|
* is required to hold the mmap_sem in read mode. We need the
|
||||||
* anon_vma lock to serialize against concurrent expand_stacks.
|
* anon_vma lock to serialize against concurrent expand_stacks.
|
||||||
*/
|
*/
|
||||||
address &= PAGE_MASK;
|
|
||||||
error = 0;
|
|
||||||
|
|
||||||
/* Somebody else might have raced and expanded it already */
|
/* Somebody else might have raced and expanded it already */
|
||||||
if (address < vma->vm_start) {
|
if (address < vma->vm_start) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue