diff options
| author | Lorenzo Stoakes <lstoakes@gmail.com> | 2016-10-12 20:20:16 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-10-19 11:11:43 -0400 |
| commit | 768ae309a96103ed02eb1e111e838c87854d8b51 (patch) | |
| tree | 59f9070c68cc87d37e5edf6439b5074a96f5d3dd /arch | |
| parent | 7f23b3504a0df63b724180262c5f3f117f21bcae (diff) | |
mm: replace get_user_pages() write/force parameters with gup_flags
This removes the 'write' and 'force' from get_user_pages() and replaces
them with 'gup_flags' to make the use of FOLL_FORCE explicit in callers
as use of this flag can result in surprising behaviour (and hence bugs)
within the mm subsystem.
Signed-off-by: Lorenzo Stoakes <lstoakes@gmail.com>
Acked-by: Christian König <christian.koenig@amd.com>
Acked-by: Jesper Nilsson <jesper.nilsson@axis.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/cris/arch-v32/drivers/cryptocop.c | 4 | ||||
| -rw-r--r-- | arch/ia64/kernel/err_inject.c | 2 | ||||
| -rw-r--r-- | arch/x86/mm/mpx.c | 5 |
3 files changed, 4 insertions, 7 deletions
diff --git a/arch/cris/arch-v32/drivers/cryptocop.c b/arch/cris/arch-v32/drivers/cryptocop.c index b5698c876fcc..099e170a93ee 100644 --- a/arch/cris/arch-v32/drivers/cryptocop.c +++ b/arch/cris/arch-v32/drivers/cryptocop.c | |||
| @@ -2722,7 +2722,6 @@ static int cryptocop_ioctl_process(struct inode *inode, struct file *filp, unsig | |||
| 2722 | err = get_user_pages((unsigned long int)(oper.indata + prev_ix), | 2722 | err = get_user_pages((unsigned long int)(oper.indata + prev_ix), |
| 2723 | noinpages, | 2723 | noinpages, |
| 2724 | 0, /* read access only for in data */ | 2724 | 0, /* read access only for in data */ |
| 2725 | 0, /* no force */ | ||
| 2726 | inpages, | 2725 | inpages, |
| 2727 | NULL); | 2726 | NULL); |
| 2728 | 2727 | ||
| @@ -2736,8 +2735,7 @@ static int cryptocop_ioctl_process(struct inode *inode, struct file *filp, unsig | |||
| 2736 | if (oper.do_cipher){ | 2735 | if (oper.do_cipher){ |
| 2737 | err = get_user_pages((unsigned long int)oper.cipher_outdata, | 2736 | err = get_user_pages((unsigned long int)oper.cipher_outdata, |
| 2738 | nooutpages, | 2737 | nooutpages, |
| 2739 | 1, /* write access for out data */ | 2738 | FOLL_WRITE, /* write access for out data */ |
| 2740 | 0, /* no force */ | ||
| 2741 | outpages, | 2739 | outpages, |
| 2742 | NULL); | 2740 | NULL); |
| 2743 | up_read(¤t->mm->mmap_sem); | 2741 | up_read(¤t->mm->mmap_sem); |
diff --git a/arch/ia64/kernel/err_inject.c b/arch/ia64/kernel/err_inject.c index 09f845793d12..5ed0ea92c5bf 100644 --- a/arch/ia64/kernel/err_inject.c +++ b/arch/ia64/kernel/err_inject.c | |||
| @@ -142,7 +142,7 @@ store_virtual_to_phys(struct device *dev, struct device_attribute *attr, | |||
| 142 | u64 virt_addr=simple_strtoull(buf, NULL, 16); | 142 | u64 virt_addr=simple_strtoull(buf, NULL, 16); |
| 143 | int ret; | 143 | int ret; |
| 144 | 144 | ||
| 145 | ret = get_user_pages(virt_addr, 1, VM_READ, 0, NULL, NULL); | 145 | ret = get_user_pages(virt_addr, 1, FOLL_WRITE, NULL, NULL); |
| 146 | if (ret<=0) { | 146 | if (ret<=0) { |
| 147 | #ifdef ERR_INJ_DEBUG | 147 | #ifdef ERR_INJ_DEBUG |
| 148 | printk("Virtual address %lx is not existing.\n",virt_addr); | 148 | printk("Virtual address %lx is not existing.\n",virt_addr); |
diff --git a/arch/x86/mm/mpx.c b/arch/x86/mm/mpx.c index 80476878eb4c..e4f800999b32 100644 --- a/arch/x86/mm/mpx.c +++ b/arch/x86/mm/mpx.c | |||
| @@ -544,10 +544,9 @@ static int mpx_resolve_fault(long __user *addr, int write) | |||
| 544 | { | 544 | { |
| 545 | long gup_ret; | 545 | long gup_ret; |
| 546 | int nr_pages = 1; | 546 | int nr_pages = 1; |
| 547 | int force = 0; | ||
| 548 | 547 | ||
| 549 | gup_ret = get_user_pages((unsigned long)addr, nr_pages, write, | 548 | gup_ret = get_user_pages((unsigned long)addr, nr_pages, |
| 550 | force, NULL, NULL); | 549 | write ? FOLL_WRITE : 0, NULL, NULL); |
| 551 | /* | 550 | /* |
| 552 | * get_user_pages() returns number of pages gotten. | 551 | * get_user_pages() returns number of pages gotten. |
| 553 | * 0 means we failed to fault in and get anything, | 552 | * 0 means we failed to fault in and get anything, |
