Use the previous stack entry protection and max protection to correctly

propagate the stack execution permissions when stack is grown down.

First, curproc->p_sysent->sv_stackprot specifies maximum allowed stack
protection for current ABI, so the new stack entry was typically marked
executable always. Second, for non-main stack MAP_STACK mapping,
the PROT_ flags should be used which were specified at the mmap(2) call
time, and not sv_stackprot.

MFC after:	1 week
This commit is contained in:
Konstantin Belousov 2012-06-10 11:31:50 +00:00
parent eb586bd9ee
commit 83ce08538a

View file

@ -3528,7 +3528,7 @@ Retry:
}
rv = vm_map_insert(map, NULL, 0, addr, stack_entry->start,
p->p_sysent->sv_stackprot, VM_PROT_ALL, 0);
next_entry->protection, next_entry->max_protection, 0);
/* Adjust the available stack space by the amount we grew. */
if (rv == KERN_SUCCESS) {