I forgot to add that these changes have been obtained from NetBSD.

> CVSROOT:      /cvs
> Module name:  src
> Changes by:   m...@cvs.openbsd.org    2014/01/06 13:27:44
> 
> Modified files:
>       sys/arch/alpha/alpha: pmap.c trap.c 
>       sys/arch/alpha/include: pte.h 
> 
> Log message:
> Put PG_EXEC and PG_FOE into the PG_PROT mask, and make sure the default
> pte protection masks, as initialized in alpha_protection_init(), set PG_FOE
> by default when VM_PROT_EXECUTE is not set.
> 
> Also, change pmap_emulate_reference() to only clear PG_FOE if the affected
> pte has executable permission.
> 
> This allows various pmap_pte_exec() checks (added to explicitely set PG_FOE)
> to be removed.
> 
> All tests of regress/sys/kern/noexec now reliably pass on EV5. EV6 systems
> still see spurious (but no longer 100% reproduceable) failures of the `catch
> a signal' tests, which is likely caused by the effect of mprotect() removing
> execute permission not taking effect correctly, despite PAL IMB being issued
> (and no, this is not caused by the previous pmap_changebit() change), to be
> investigated.

Reply via email to