nommu: check fd read permission in validate_mmap_request()
According to the POSIX (1003.1-2008), the file descriptor shall have been opened with read permission, regardless of the protection options specified to mmap(). The ltp test cases mmap06/07 need this. Signed-off-by: Graff Yang <graff.yang@gmail.com> Acked-by: Paul Mundt <lethal@linux-sh.org> Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: Greg Ungerer <gerg@snapgear.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
1915297566
commit
28d7a6ae92
1 changed files with 4 additions and 0 deletions
|
@ -919,6 +919,10 @@ static int validate_mmap_request(struct file *file,
|
||||||
if (!file->f_op->read)
|
if (!file->f_op->read)
|
||||||
capabilities &= ~BDI_CAP_MAP_COPY;
|
capabilities &= ~BDI_CAP_MAP_COPY;
|
||||||
|
|
||||||
|
/* The file shall have been opened with read permission. */
|
||||||
|
if (!(file->f_mode & FMODE_READ))
|
||||||
|
return -EACCES;
|
||||||
|
|
||||||
if (flags & MAP_SHARED) {
|
if (flags & MAP_SHARED) {
|
||||||
/* do checks for writing, appending and locking */
|
/* do checks for writing, appending and locking */
|
||||||
if ((prot & PROT_WRITE) &&
|
if ((prot & PROT_WRITE) &&
|
||||||
|
|
Loading…
Reference in a new issue