3 ms·
Is that actually enforced in modern linux kernels? I thought it would be possible to call mmap(..., PROT_READ | PROT_WRITE | PROT_EXEC, ...)
by ant6n 11y ago
Is that actually enforced in modern linux kernels? I thought it would be possible to call
mmap(..., PROT_READ | PROT_WRITE | PROT_EXEC, ...)
- ant6n 11y agoIf this ever gets enforced it could be annoying for software that generates code at runtime, which may require quick access to some run-time data for particular instructions. It may be useful to force huge pages for dynamically generated code to improve pressure on the TLB. It can slow down code generation if the pages with code in it have to be converted to write and then converted back to execute every time a new bit of dynamic code gets added. Additionally, if the generated code instructions require access to a bit of dynamic data, it may not be able to actually reach a separate data page using immediate offsets to pc on some architectures (e.g. ARM).
- Hydraulix989 11y agoOpenBSD kernel enforces it (even inside the kernel, not just user mode processes): http://marc.info/?l=openbsd-tech&m=142120787308107&w=2 http://marc.info/?l=openbsd-tech&m=142120787308107&w=2
- bgilroy26 11y agoMike Larkin re:W^X a few days ago: https://youtu.be/A7vtAAeW6zo https://youtu.be/A7vtAAeW6zo