Merge branch 'mm-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull mm gup cleanup from Ingo Molnar: "This removes the ugly get-user-pages API hack, now that all upstream code has been migrated to it" ("ugly" is putting it mildly. But it worked.. - Linus) * 'mm-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: mm/gup: Remove the macro overload API migration helpers from the get_user*() APIs
Este commit está contenido en:
52
mm/gup.c
52
mm/gup.c
@@ -1,4 +1,3 @@
|
||||
#define __DISABLE_GUP_DEPRECATED 1
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/err.h>
|
||||
@@ -839,7 +838,7 @@ static __always_inline long __get_user_pages_locked(struct task_struct *tsk,
|
||||
* if (locked)
|
||||
* up_read(&mm->mmap_sem);
|
||||
*/
|
||||
long get_user_pages_locked6(unsigned long start, unsigned long nr_pages,
|
||||
long get_user_pages_locked(unsigned long start, unsigned long nr_pages,
|
||||
int write, int force, struct page **pages,
|
||||
int *locked)
|
||||
{
|
||||
@@ -847,7 +846,7 @@ long get_user_pages_locked6(unsigned long start, unsigned long nr_pages,
|
||||
write, force, pages, NULL, locked, true,
|
||||
FOLL_TOUCH);
|
||||
}
|
||||
EXPORT_SYMBOL(get_user_pages_locked6);
|
||||
EXPORT_SYMBOL(get_user_pages_locked);
|
||||
|
||||
/*
|
||||
* Same as get_user_pages_unlocked(...., FOLL_TOUCH) but it allows to
|
||||
@@ -892,13 +891,13 @@ EXPORT_SYMBOL(__get_user_pages_unlocked);
|
||||
* or if "force" shall be set to 1 (get_user_pages_fast misses the
|
||||
* "force" parameter).
|
||||
*/
|
||||
long get_user_pages_unlocked5(unsigned long start, unsigned long nr_pages,
|
||||
long get_user_pages_unlocked(unsigned long start, unsigned long nr_pages,
|
||||
int write, int force, struct page **pages)
|
||||
{
|
||||
return __get_user_pages_unlocked(current, current->mm, start, nr_pages,
|
||||
write, force, pages, FOLL_TOUCH);
|
||||
}
|
||||
EXPORT_SYMBOL(get_user_pages_unlocked5);
|
||||
EXPORT_SYMBOL(get_user_pages_unlocked);
|
||||
|
||||
/*
|
||||
* get_user_pages_remote() - pin user pages in memory
|
||||
@@ -972,7 +971,7 @@ EXPORT_SYMBOL(get_user_pages_remote);
|
||||
* and mm being operated on are the current task's. We also
|
||||
* obviously don't pass FOLL_REMOTE in here.
|
||||
*/
|
||||
long get_user_pages6(unsigned long start, unsigned long nr_pages,
|
||||
long get_user_pages(unsigned long start, unsigned long nr_pages,
|
||||
int write, int force, struct page **pages,
|
||||
struct vm_area_struct **vmas)
|
||||
{
|
||||
@@ -980,7 +979,7 @@ long get_user_pages6(unsigned long start, unsigned long nr_pages,
|
||||
write, force, pages, vmas, NULL, false,
|
||||
FOLL_TOUCH);
|
||||
}
|
||||
EXPORT_SYMBOL(get_user_pages6);
|
||||
EXPORT_SYMBOL(get_user_pages);
|
||||
|
||||
/**
|
||||
* populate_vma_page_range() - populate a range of pages in the vma.
|
||||
@@ -1491,7 +1490,6 @@ int __get_user_pages_fast(unsigned long start, int nr_pages, int write,
|
||||
int get_user_pages_fast(unsigned long start, int nr_pages, int write,
|
||||
struct page **pages)
|
||||
{
|
||||
struct mm_struct *mm = current->mm;
|
||||
int nr, ret;
|
||||
|
||||
start &= PAGE_MASK;
|
||||
@@ -1503,8 +1501,7 @@ int get_user_pages_fast(unsigned long start, int nr_pages, int write,
|
||||
start += nr << PAGE_SHIFT;
|
||||
pages += nr;
|
||||
|
||||
ret = get_user_pages_unlocked(current, mm, start,
|
||||
nr_pages - nr, write, 0, pages);
|
||||
ret = get_user_pages_unlocked(start, nr_pages - nr, write, 0, pages);
|
||||
|
||||
/* Have to be a bit careful with return values */
|
||||
if (nr > 0) {
|
||||
@@ -1519,38 +1516,3 @@ int get_user_pages_fast(unsigned long start, int nr_pages, int write,
|
||||
}
|
||||
|
||||
#endif /* CONFIG_HAVE_GENERIC_RCU_GUP */
|
||||
|
||||
long get_user_pages8(struct task_struct *tsk, struct mm_struct *mm,
|
||||
unsigned long start, unsigned long nr_pages,
|
||||
int write, int force, struct page **pages,
|
||||
struct vm_area_struct **vmas)
|
||||
{
|
||||
WARN_ONCE(tsk != current, "get_user_pages() called on remote task");
|
||||
WARN_ONCE(mm != current->mm, "get_user_pages() called on remote mm");
|
||||
|
||||
return get_user_pages6(start, nr_pages, write, force, pages, vmas);
|
||||
}
|
||||
EXPORT_SYMBOL(get_user_pages8);
|
||||
|
||||
long get_user_pages_locked8(struct task_struct *tsk, struct mm_struct *mm,
|
||||
unsigned long start, unsigned long nr_pages,
|
||||
int write, int force, struct page **pages, int *locked)
|
||||
{
|
||||
WARN_ONCE(tsk != current, "get_user_pages_locked() called on remote task");
|
||||
WARN_ONCE(mm != current->mm, "get_user_pages_locked() called on remote mm");
|
||||
|
||||
return get_user_pages_locked6(start, nr_pages, write, force, pages, locked);
|
||||
}
|
||||
EXPORT_SYMBOL(get_user_pages_locked8);
|
||||
|
||||
long get_user_pages_unlocked7(struct task_struct *tsk, struct mm_struct *mm,
|
||||
unsigned long start, unsigned long nr_pages,
|
||||
int write, int force, struct page **pages)
|
||||
{
|
||||
WARN_ONCE(tsk != current, "get_user_pages_unlocked() called on remote task");
|
||||
WARN_ONCE(mm != current->mm, "get_user_pages_unlocked() called on remote mm");
|
||||
|
||||
return get_user_pages_unlocked5(start, nr_pages, write, force, pages);
|
||||
}
|
||||
EXPORT_SYMBOL(get_user_pages_unlocked7);
|
||||
|
||||
|
Referencia en una nueva incidencia
Block a user