Rather than marking MAP_STACK on entries for sigaltstack() [2 days ago],
authorderaadt <deraadt@openbsd.org>
Sun, 16 Oct 2022 16:16:37 +0000 (16:16 +0000)
committerderaadt <deraadt@openbsd.org>
Sun, 16 Oct 2022 16:16:37 +0000 (16:16 +0000)
commit2e53ad5e72f9b36133dfc3c0ca2faa805f0dec1f
tree29dd7ccb635e3987d430962e6a77a371f837ce39
parent40b59acf4bb41dfb3941bf6c12c2b8292065d3b0
Rather than marking MAP_STACK on entries for sigaltstack() [2 days ago],
go back to the old approach: using a new anon mapping because it removes
any potential gadgetry pre-placed in the region (by making it zero).  But
also bring in a few more validation checks beyond contigious mapping -- it
must not be a syscall region, and the protection must be precisely RW.
This does allow sigaltstack() to shoot zero'd MAP_STACK non-immutable regions
into the main stack area (which will soon be immutable).  I am not sure we
can keep reinforce immutable on the region after we do stack (like maybe
determine this while doing the validation entry walk?)
Sadly, continued support for sigaltstack() does require selecting the guessed
best compromise.
ok kettenis
sys/uvm/uvm_extern.h
sys/uvm/uvm_map.c
sys/uvm/uvm_map.h