|
@@ -3479,8 +3479,9 @@ static int selinux_file_mprotect(struct vm_area_struct *vma,
|
|
|
vma->vm_end <= vma->vm_mm->brk) {
|
|
|
rc = cred_has_perm(cred, cred, PROCESS__EXECHEAP);
|
|
|
} else if (!vma->vm_file &&
|
|
|
- vma->vm_start <= vma->vm_mm->start_stack &&
|
|
|
- vma->vm_end >= vma->vm_mm->start_stack) {
|
|
|
+ ((vma->vm_start <= vma->vm_mm->start_stack &&
|
|
|
+ vma->vm_end >= vma->vm_mm->start_stack) ||
|
|
|
+ vma_is_stack_for_task(vma, current))) {
|
|
|
rc = current_has_perm(current, PROCESS__EXECSTACK);
|
|
|
} else if (vma->vm_file && vma->anon_vma) {
|
|
|
/*
|