mm: fix checks for PROT_NONE
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 8 Apr 2019 23:30:19 +0000 (19:30 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 8 Apr 2019 23:30:19 +0000 (19:30 -0400)
commitee6bef89ffdbd448ffdc98db1edd2e5bd6c1ef14
tree345f289bdd42f916d98a76a733878de4b4a9cfae
parent3ee608864c6c2d5c76b6ae48b30673b2870e717a
mm: fix checks for PROT_NONE

You gotta love PROT_NONE, O_RDONLY, and any of these flags whose value
is zero.

The old code assumed that the only options for 'prot' were mutually
exclusive with PROT_NONE, such that we could check prot == PROT_NONE
when we really meant "has no access".  We checked for equality, since we
can't do (prot & PROT_NONE), since PROT_NONE == 0.

However, checking prot == PROT_NONE is wrong: we have other flags, like
PROT_GROWSDOWN.  Arguably, we shouldn't use those flags - I'll remove
them shortly.  Regardless, using a helper cleans up the code.

Reported-by: syzbot+aafc3433b89c900f8fe1@syzkaller.appspotmail.com
Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/src/mm.c