On Thu, Oct 1, 2015 at 6:56 PM, Dave Hansen <dave@xxxxxxxx> 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 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>