Re: make PROT_WRITE imply PROT_READ
From: Robert Hancock
Date: Thu Jun 22 2006 - 21:25:18 EST
Jason Baron wrote:
Currently, if i mmap() a file PROT_WRITE only and then first read from it
and then write to it, i get a SEGV. However, if i write to it first and
then read from it, i get no SEGV. This seems rather inconsistent.
The current implementation seems to be to make PROT_WRITE imply PROT_READ,
however it does not quite work correctly. The patch below resolves this
issue, by explicitly setting the PROT_READ flag when PROT_WRITE is
requested.
I would disagree.. the kernel is enforcing the permissions specified
where the CPU architecture allows it. There is no sense in breaking this
everywhere just because we can't always enforce it. By that logic we
should be making PROT_READ imply PROT_EXEC because not all CPUs can
enforce them separately, which makes no sense at all.
This might appear at first as a possible permissions subversion, as i
could get PROT_READ on a file that i only have write permission
to...however, the mmap implementation requires that the file be opened
with at least read access already. Thus, i don't believe there is any
issue with regards to permissions.
Another consequenece of this patch is that it forces PROT_READ even for
architectures that might be able to support it, (I know that x86, x86_64
and ia64 do not) but i think this is best for portability.
That makes little sense to me.. if you want portability, and you're
reading from the file, you better request PROT_READ. Any app that
doesn't do that is inherently broken and non-portable regardless of what
you do to the kernel.
--
Robert Hancock Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@xxxxxxxxxxxxx
Home Page: http://www.roberthancock.com/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/