mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
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 <[email protected]> Acked-by: Christian König <[email protected]> Acked-by: Jesper Nilsson <[email protected]> Acked-by: Michal Hocko <[email protected]> Reviewed-by: Jan Kara <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
7f23b3504a
commit
768ae309a9
22 changed files with 49 additions and 54 deletions
12
mm/gup.c
12
mm/gup.c
|
|
@ -987,18 +987,12 @@ EXPORT_SYMBOL(get_user_pages_remote);
|
|||
* obviously don't pass FOLL_REMOTE in here.
|
||||
*/
|
||||
long get_user_pages(unsigned long start, unsigned long nr_pages,
|
||||
int write, int force, struct page **pages,
|
||||
unsigned int gup_flags, struct page **pages,
|
||||
struct vm_area_struct **vmas)
|
||||
{
|
||||
unsigned int flags = FOLL_TOUCH;
|
||||
|
||||
if (write)
|
||||
flags |= FOLL_WRITE;
|
||||
if (force)
|
||||
flags |= FOLL_FORCE;
|
||||
|
||||
return __get_user_pages_locked(current, current->mm, start, nr_pages,
|
||||
pages, vmas, NULL, false, flags);
|
||||
pages, vmas, NULL, false,
|
||||
gup_flags | FOLL_TOUCH);
|
||||
}
|
||||
EXPORT_SYMBOL(get_user_pages);
|
||||
|
||||
|
|
|
|||
|
|
@ -850,7 +850,7 @@ static int lookup_node(unsigned long addr)
|
|||
struct page *p;
|
||||
int err;
|
||||
|
||||
err = get_user_pages(addr & PAGE_MASK, 1, 0, 0, &p, NULL);
|
||||
err = get_user_pages(addr & PAGE_MASK, 1, 0, &p, NULL);
|
||||
if (err >= 0) {
|
||||
err = page_to_nid(p);
|
||||
put_page(p);
|
||||
|
|
|
|||
18
mm/nommu.c
18
mm/nommu.c
|
|
@ -160,18 +160,11 @@ finish_or_fault:
|
|||
* - don't permit access to VMAs that don't support it, such as I/O mappings
|
||||
*/
|
||||
long get_user_pages(unsigned long start, unsigned long nr_pages,
|
||||
int write, int force, struct page **pages,
|
||||
unsigned int gup_flags, struct page **pages,
|
||||
struct vm_area_struct **vmas)
|
||||
{
|
||||
int flags = 0;
|
||||
|
||||
if (write)
|
||||
flags |= FOLL_WRITE;
|
||||
if (force)
|
||||
flags |= FOLL_FORCE;
|
||||
|
||||
return __get_user_pages(current, current->mm, start, nr_pages, flags,
|
||||
pages, vmas, NULL);
|
||||
return __get_user_pages(current, current->mm, start, nr_pages,
|
||||
gup_flags, pages, vmas, NULL);
|
||||
}
|
||||
EXPORT_SYMBOL(get_user_pages);
|
||||
|
||||
|
|
@ -179,10 +172,7 @@ long get_user_pages_locked(unsigned long start, unsigned long nr_pages,
|
|||
unsigned int gup_flags, struct page **pages,
|
||||
int *locked)
|
||||
{
|
||||
int write = gup_flags & FOLL_WRITE;
|
||||
int force = gup_flags & FOLL_FORCE;
|
||||
|
||||
return get_user_pages(start, nr_pages, write, force, pages, NULL);
|
||||
return get_user_pages(start, nr_pages, gup_flags, pages, NULL);
|
||||
}
|
||||
EXPORT_SYMBOL(get_user_pages_locked);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue