From 83ce08538a49519330ef4e6ddab3f5dee646e861 Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Sun, 10 Jun 2012 11:31:50 +0000 Subject: [PATCH] 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 --- sys/vm/vm_map.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index b74cec14c8f..f95fd82db06 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -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) {