|
@@ -1615,6 +1615,12 @@ static inline int expand_downwards(struct vm_area_struct *vma,
|
|
|
*/
|
|
|
if (unlikely(anon_vma_prepare(vma)))
|
|
|
return -ENOMEM;
|
|
|
+
|
|
|
+ address &= PAGE_MASK;
|
|
|
+ error = security_file_mmap(0, 0, 0, 0, address, 1);
|
|
|
+ if (error)
|
|
|
+ return error;
|
|
|
+
|
|
|
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
|
|
|
* anon_vma lock to serialize against concurrent expand_stacks.
|
|
|
*/
|
|
|
- address &= PAGE_MASK;
|
|
|
- error = 0;
|
|
|
|
|
|
/* Somebody else might have raced and expanded it already */
|
|
|
if (address < vma->vm_start) {
|