Messages in this thread | | | Date | Thu, 1 Oct 2015 21:38:10 -0400 | Subject | Re: [PATCH 26/26] x86, pkeys: Documentation | From | Linus Torvalds <> |
| |
On Thu, Oct 1, 2015 at 6:56 PM, Dave Hansen <dave@sr71.net> wrote: > > Also, a quick ftrace showed that most mmap() callers that set PROT_EXEC > also set PROT_READ. I'm just assuming that folks are setting PROT_READ > but aren't _really_ going to read it, so we can safely deny them all > access other than exec.
That's a completely insane assumption. There are tons of reasons to have code and read-only data in the same segment, and it's very traditional. Just assuming that you only execute out of something that has PROT_EXEC | PROT_READ is insane.
No, what you *should* look at is to use the protection keys to actually enforce a plain PROT_EXEC. That has never worked before (because traditionally R implies X, and then we got NX).
That would at least allow people who know they don't intersperse read-only constants in the code to use PROT_EXE only.
Of course, there may well be users who use PROT_EXE that actually *do* do reads, and just relied on the old hardware behavior. So it's not guaranteed to work either without any extra flags. But at least it's worth a try, unlike the "yeah, the user asked for read, but the user doesn't know what he's doing" thinking that is just crazy talk.
Linus
| |