939df36e55
and make the stack and heap non-executable by default. the changes fall into two basic catagories: - pmap and trap-handler changes. these are all MD: = alpha: we already track per-page execute permission with the (software) PG_EXEC bit, so just have the trap handler pay attention to it. = i386: use a new GDT segment for %cs for processes that have no executable mappings above a certain threshold (currently the bottom of the stack). track per-page execute permission with the last unused PTE bit. = powerpc/ibm4xx: just use the hardware exec bit. = powerpc/oea: we already track per-page exec bits, but the hardware only implements non-exec mappings at the segment level. so track the number of executable mappings in each segment and turn on the no-exec segment bit iff the count is 0. adjust the trap handler to deal. = sparc (sun4m): fix our use of the hardware protection bits. fix the trap handler to recognize text faults. = sparc64: split the existing unified TSB into data and instruction TSBs, and only load TTEs into the appropriate TSB(s) for the permissions. fix the trap handler to check for execute permission. = not yet implemented: amd64, hppa, sh5 - changes in all the emulations that put a signal trampoline on the stack. instead, we now put the trampoline into a uvm_aobj and map that into the process separately. originally from openbsd, adapted for netbsd by me. |
||
---|---|---|
.. | ||
alpha_cpu.h | ||
alpha.h | ||
ansi.h | ||
aout_machdep.h | ||
asm.h | ||
atomic.h | ||
autoconf.h | ||
bswap.h | ||
bus.h | ||
bwx.h | ||
cdefs.h | ||
cfbreg.h | ||
cpu_counter.h | ||
cpu.h | ||
cpuconf.h | ||
cpuvar.h | ||
db_machdep.h | ||
disklabel.h | ||
ecoff_machdep.h | ||
eisa_machdep.h | ||
elf_machdep.h | ||
endian_machdep.h | ||
endian.h | ||
float.h | ||
fpu.h | ||
frame.h | ||
ieee.h | ||
ieeefp.h | ||
int_const.h | ||
int_fmtio.h | ||
int_limits.h | ||
int_mwgwtypes.h | ||
int_types.h | ||
intr.h | ||
isa_machdep.h | ||
isapnp_machdep.h | ||
kbio.h | ||
kcore.h | ||
limits.h | ||
loadfile_machdep.h | ||
lock.h | ||
logout.h | ||
Makefile | ||
Makefile.inc | ||
math.h | ||
mcontext.h | ||
pal.h | ||
param.h | ||
pcb.h | ||
pci_machdep.h | ||
pio.h | ||
pmap.h | ||
pmc.h | ||
proc.h | ||
profile.h | ||
prom.h | ||
psl.h | ||
pte.h | ||
ptrace.h | ||
reg.h | ||
rpb.h | ||
setjmp.h | ||
sigdebug.h | ||
signal.h | ||
stdarg.h | ||
sysarch.h | ||
tc_machdep.h | ||
types.h | ||
userret.h | ||
varargs.h | ||
vmparam.h | ||
vuid_event.h | ||
z8530var.h |