X-Git-Url: http://git.cascardo.info/?a=blobdiff_plain;f=fs%2Fexec.c;h=4e497b9ee71ee96d0647721e4649feff7adaf7c1;hb=965c4b7e1adacd8fd9c5f3db6f64c3ba834ef6a0;hp=6fcfb3f7b137951b133d3db95431c23bc2d4677f;hpb=f735aa279021149ef600febe07333ad218783d79;p=cascardo%2Flinux.git diff --git a/fs/exec.c b/fs/exec.c index 6fcfb3f7b137..4e497b9ee71e 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -191,6 +191,7 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos, { struct page *page; int ret; + unsigned int gup_flags = FOLL_FORCE; #ifdef CONFIG_STACK_GROWSUP if (write) { @@ -199,12 +200,16 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos, return NULL; } #endif + + if (write) + gup_flags |= FOLL_WRITE; + /* * We are doing an exec(). 'current' is the process * doing the exec and bprm->mm is the new process's mm. */ - ret = get_user_pages_remote(current, bprm->mm, pos, 1, write, - 1, &page, NULL); + ret = get_user_pages_remote(current, bprm->mm, pos, 1, gup_flags, + &page, NULL); if (ret <= 0) return NULL;