diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-08-27 03:47:18 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-08-27 03:47:18 +0200 |
commit | 2149600d129944f60cbc858bc669193af0523409 (patch) | |
tree | 89cd2d2b36e204bbb50ed2159ebdbf7f2cd7e01c /sys/src/9/zynq | |
parent | 128ea44a89c7905612ad2fa5a61a9325ddfb5e1e (diff) |
kernel: catch execution read fault on SG_NOEXEC segment
fault() now has an additional pc argument that is
used to detect fault on a non-executable segment.
that is, we check on read fault if the segment
has the SG_NOEXEC attribute and the program counter
is within faulting page.
Diffstat (limited to 'sys/src/9/zynq')
-rw-r--r-- | sys/src/9/zynq/trap.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/src/9/zynq/trap.c b/sys/src/9/zynq/trap.c index cb35b4a9d..d9ceee74c 100644 --- a/sys/src/9/zynq/trap.c +++ b/sys/src/9/zynq/trap.c @@ -98,7 +98,7 @@ faultarm(Ureg *ureg, ulong fsr, uintptr addr) case 0x0B: /* domain fault L2 */ case 0x0D: /* permission fault L1 */ case 0x0F: /* permission fault L2 */ - if(fault(addr, read) == 0) + if(fault(addr, ureg->pc, read) == 0) break; /* wet floor */ default: |