diff options
Diffstat (limited to 'fs/binfmt_flat.c')
| -rw-r--r-- | fs/binfmt_flat.c | 12 | 
1 files changed, 3 insertions, 9 deletions
diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c index 024d20ee3ca..6b2daf99fab 100644 --- a/fs/binfmt_flat.c +++ b/fs/binfmt_flat.c @@ -542,10 +542,8 @@ static int load_flat_file(struct linux_binprm * bprm,  		 */  		DBG_FLT("BINFMT_FLAT: ROM mapping of file (we hope)\n"); -		down_write(¤t->mm->mmap_sem); -		textpos = do_mmap(bprm->file, 0, text_len, PROT_READ|PROT_EXEC, +		textpos = vm_mmap(bprm->file, 0, text_len, PROT_READ|PROT_EXEC,  				  MAP_PRIVATE|MAP_EXECUTABLE, 0); -		up_write(¤t->mm->mmap_sem);  		if (!textpos || IS_ERR_VALUE(textpos)) {  			if (!textpos)  				textpos = (unsigned long) -ENOMEM; @@ -556,10 +554,8 @@ static int load_flat_file(struct linux_binprm * bprm,  		len = data_len + extra + MAX_SHARED_LIBS * sizeof(unsigned long);  		len = PAGE_ALIGN(len); -		down_write(¤t->mm->mmap_sem); -		realdatastart = do_mmap(0, 0, len, +		realdatastart = vm_mmap(0, 0, len,  			PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE, 0); -		up_write(¤t->mm->mmap_sem);  		if (realdatastart == 0 || IS_ERR_VALUE(realdatastart)) {  			if (!realdatastart) @@ -603,10 +599,8 @@ static int load_flat_file(struct linux_binprm * bprm,  		len = text_len + data_len + extra + MAX_SHARED_LIBS * sizeof(unsigned long);  		len = PAGE_ALIGN(len); -		down_write(¤t->mm->mmap_sem); -		textpos = do_mmap(0, 0, len, +		textpos = vm_mmap(0, 0, len,  			PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE, 0); -		up_write(¤t->mm->mmap_sem);  		if (!textpos || IS_ERR_VALUE(textpos)) {  			if (!textpos)  |