Commit 8f5bb0438b86d1a5393176ceeec2836fd469edf8
Committed by
Linus Torvalds
1 parent
d671a1cbf7
Exists in
master
and in
4 other branches
[PATCH] binfmt_flat mmap flag fix
Make sure that binfmt_flat passes the correct flags into do_mmap(). nommu's validate_mmap_request() will simple return -EINVAL if we try and pass it a flags value of zero. Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Showing 1 changed file with 3 additions and 3 deletions Side-by-side Diff
fs/binfmt_flat.c
... | ... | @@ -520,7 +520,7 @@ |
520 | 520 | DBG_FLT("BINFMT_FLAT: ROM mapping of file (we hope)\n"); |
521 | 521 | |
522 | 522 | down_write(¤t->mm->mmap_sem); |
523 | - textpos = do_mmap(bprm->file, 0, text_len, PROT_READ|PROT_EXEC, 0, 0); | |
523 | + textpos = do_mmap(bprm->file, 0, text_len, PROT_READ|PROT_EXEC, MAP_SHARED, 0); | |
524 | 524 | up_write(¤t->mm->mmap_sem); |
525 | 525 | if (!textpos || textpos >= (unsigned long) -4096) { |
526 | 526 | if (!textpos) |
... | ... | @@ -532,7 +532,7 @@ |
532 | 532 | down_write(¤t->mm->mmap_sem); |
533 | 533 | realdatastart = do_mmap(0, 0, data_len + extra + |
534 | 534 | MAX_SHARED_LIBS * sizeof(unsigned long), |
535 | - PROT_READ|PROT_WRITE|PROT_EXEC, 0, 0); | |
535 | + PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE, 0); | |
536 | 536 | up_write(¤t->mm->mmap_sem); |
537 | 537 | |
538 | 538 | if (realdatastart == 0 || realdatastart >= (unsigned long)-4096) { |
... | ... | @@ -574,7 +574,7 @@ |
574 | 574 | down_write(¤t->mm->mmap_sem); |
575 | 575 | textpos = do_mmap(0, 0, text_len + data_len + extra + |
576 | 576 | MAX_SHARED_LIBS * sizeof(unsigned long), |
577 | - PROT_READ | PROT_EXEC | PROT_WRITE, 0, 0); | |
577 | + PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE, 0); | |
578 | 578 | up_write(¤t->mm->mmap_sem); |
579 | 579 | if (!textpos || textpos >= (unsigned long) -4096) { |
580 | 580 | if (!textpos) |