Skip to content

Commit 64019a2

Browse files
xzpetertorvalds
authored andcommitted
mm/gup: remove task_struct pointer for all gup code
After the cleanup of page fault accounting, gup does not need to pass task_struct around any more. Remove that parameter in the whole gup stack. Signed-off-by: Peter Xu <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Reviewed-by: John Hubbard <[email protected]> Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Linus Torvalds <[email protected]>
1 parent a2beb5f commit 64019a2

File tree

18 files changed

+69
-87
lines changed

18 files changed

+69
-87
lines changed

arch/arc/kernel/process.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ SYSCALL_DEFINE3(arc_usr_cmpxchg, int *, uaddr, int, expected, int, new)
9191
goto fail;
9292

9393
mmap_read_lock(current->mm);
94-
ret = fixup_user_fault(current, current->mm, (unsigned long) uaddr,
94+
ret = fixup_user_fault(current->mm, (unsigned long) uaddr,
9595
FAULT_FLAG_WRITE, NULL);
9696
mmap_read_unlock(current->mm);
9797

arch/s390/kvm/interrupt.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2768,7 +2768,7 @@ static struct page *get_map_page(struct kvm *kvm, u64 uaddr)
27682768
struct page *page = NULL;
27692769

27702770
mmap_read_lock(kvm->mm);
2771-
get_user_pages_remote(NULL, kvm->mm, uaddr, 1, FOLL_WRITE,
2771+
get_user_pages_remote(kvm->mm, uaddr, 1, FOLL_WRITE,
27722772
&page, NULL, NULL);
27732773
mmap_read_unlock(kvm->mm);
27742774
return page;

arch/s390/kvm/kvm-s390.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1892,7 +1892,7 @@ static long kvm_s390_set_skeys(struct kvm *kvm, struct kvm_s390_skeys *args)
18921892

18931893
r = set_guest_storage_key(current->mm, hva, keys[i], 0);
18941894
if (r) {
1895-
r = fixup_user_fault(current, current->mm, hva,
1895+
r = fixup_user_fault(current->mm, hva,
18961896
FAULT_FLAG_WRITE, &unlocked);
18971897
if (r)
18981898
break;

arch/s390/kvm/priv.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ static int handle_iske(struct kvm_vcpu *vcpu)
273273
rc = get_guest_storage_key(current->mm, vmaddr, &key);
274274

275275
if (rc) {
276-
rc = fixup_user_fault(current, current->mm, vmaddr,
276+
rc = fixup_user_fault(current->mm, vmaddr,
277277
FAULT_FLAG_WRITE, &unlocked);
278278
if (!rc) {
279279
mmap_read_unlock(current->mm);
@@ -319,7 +319,7 @@ static int handle_rrbe(struct kvm_vcpu *vcpu)
319319
mmap_read_lock(current->mm);
320320
rc = reset_guest_reference_bit(current->mm, vmaddr);
321321
if (rc < 0) {
322-
rc = fixup_user_fault(current, current->mm, vmaddr,
322+
rc = fixup_user_fault(current->mm, vmaddr,
323323
FAULT_FLAG_WRITE, &unlocked);
324324
if (!rc) {
325325
mmap_read_unlock(current->mm);
@@ -390,7 +390,7 @@ static int handle_sske(struct kvm_vcpu *vcpu)
390390
m3 & SSKE_MC);
391391

392392
if (rc < 0) {
393-
rc = fixup_user_fault(current, current->mm, vmaddr,
393+
rc = fixup_user_fault(current->mm, vmaddr,
394394
FAULT_FLAG_WRITE, &unlocked);
395395
rc = !rc ? -EAGAIN : rc;
396396
}
@@ -1094,7 +1094,7 @@ static int handle_pfmf(struct kvm_vcpu *vcpu)
10941094
rc = cond_set_guest_storage_key(current->mm, vmaddr,
10951095
key, NULL, nq, mr, mc);
10961096
if (rc < 0) {
1097-
rc = fixup_user_fault(current, current->mm, vmaddr,
1097+
rc = fixup_user_fault(current->mm, vmaddr,
10981098
FAULT_FLAG_WRITE, &unlocked);
10991099
rc = !rc ? -EAGAIN : rc;
11001100
}

arch/s390/mm/gmap.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -649,7 +649,7 @@ int gmap_fault(struct gmap *gmap, unsigned long gaddr,
649649
rc = vmaddr;
650650
goto out_up;
651651
}
652-
if (fixup_user_fault(current, gmap->mm, vmaddr, fault_flags,
652+
if (fixup_user_fault(gmap->mm, vmaddr, fault_flags,
653653
&unlocked)) {
654654
rc = -EFAULT;
655655
goto out_up;
@@ -879,7 +879,7 @@ static int gmap_pte_op_fixup(struct gmap *gmap, unsigned long gaddr,
879879

880880
BUG_ON(gmap_is_shadow(gmap));
881881
fault_flags = (prot == PROT_WRITE) ? FAULT_FLAG_WRITE : 0;
882-
if (fixup_user_fault(current, mm, vmaddr, fault_flags, &unlocked))
882+
if (fixup_user_fault(mm, vmaddr, fault_flags, &unlocked))
883883
return -EFAULT;
884884
if (unlocked)
885885
/* lost mmap_lock, caller has to retry __gmap_translate */

drivers/gpu/drm/i915/gem/i915_gem_userptr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ __i915_gem_userptr_get_pages_worker(struct work_struct *_work)
469469
locked = 1;
470470
}
471471
ret = pin_user_pages_remote
472-
(work->task, mm,
472+
(mm,
473473
obj->userptr.ptr + pinned * PAGE_SIZE,
474474
npages - pinned,
475475
flags,

drivers/infiniband/core/umem_odp.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,7 @@ int ib_umem_odp_map_dma_pages(struct ib_umem_odp *umem_odp, u64 user_virt,
439439
* complex (and doesn't gain us much performance in most use
440440
* cases).
441441
*/
442-
npages = get_user_pages_remote(owning_process, owning_mm,
442+
npages = get_user_pages_remote(owning_mm,
443443
user_virt, gup_num_pages,
444444
flags, local_page_list, NULL, NULL);
445445
mmap_read_unlock(owning_mm);

drivers/vfio/vfio_iommu_type1.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ static int follow_fault_pfn(struct vm_area_struct *vma, struct mm_struct *mm,
425425
if (ret) {
426426
bool unlocked = false;
427427

428-
ret = fixup_user_fault(NULL, mm, vaddr,
428+
ret = fixup_user_fault(mm, vaddr,
429429
FAULT_FLAG_REMOTE |
430430
(write_fault ? FAULT_FLAG_WRITE : 0),
431431
&unlocked);
@@ -453,7 +453,7 @@ static int vaddr_get_pfn(struct mm_struct *mm, unsigned long vaddr,
453453
flags |= FOLL_WRITE;
454454

455455
mmap_read_lock(mm);
456-
ret = pin_user_pages_remote(NULL, mm, vaddr, 1, flags | FOLL_LONGTERM,
456+
ret = pin_user_pages_remote(mm, vaddr, 1, flags | FOLL_LONGTERM,
457457
page, NULL, NULL);
458458
if (ret == 1) {
459459
*pfn = page_to_pfn(page[0]);

fs/exec.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos,
217217
* We are doing an exec(). 'current' is the process
218218
* doing the exec and bprm->mm is the new process's mm.
219219
*/
220-
ret = get_user_pages_remote(current, bprm->mm, pos, 1, gup_flags,
220+
ret = get_user_pages_remote(bprm->mm, pos, 1, gup_flags,
221221
&page, NULL, NULL);
222222
if (ret <= 0)
223223
return NULL;

include/linux/mm.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1661,7 +1661,7 @@ int invalidate_inode_page(struct page *page);
16611661
extern vm_fault_t handle_mm_fault(struct vm_area_struct *vma,
16621662
unsigned long address, unsigned int flags,
16631663
struct pt_regs *regs);
1664-
extern int fixup_user_fault(struct task_struct *tsk, struct mm_struct *mm,
1664+
extern int fixup_user_fault(struct mm_struct *mm,
16651665
unsigned long address, unsigned int fault_flags,
16661666
bool *unlocked);
16671667
void unmap_mapping_pages(struct address_space *mapping,
@@ -1677,8 +1677,7 @@ static inline vm_fault_t handle_mm_fault(struct vm_area_struct *vma,
16771677
BUG();
16781678
return VM_FAULT_SIGBUS;
16791679
}
1680-
static inline int fixup_user_fault(struct task_struct *tsk,
1681-
struct mm_struct *mm, unsigned long address,
1680+
static inline int fixup_user_fault(struct mm_struct *mm, unsigned long address,
16821681
unsigned int fault_flags, bool *unlocked)
16831682
{
16841683
/* should never happen if there's no MMU */
@@ -1704,11 +1703,11 @@ extern int access_remote_vm(struct mm_struct *mm, unsigned long addr,
17041703
extern int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm,
17051704
unsigned long addr, void *buf, int len, unsigned int gup_flags);
17061705

1707-
long get_user_pages_remote(struct task_struct *tsk, struct mm_struct *mm,
1706+
long get_user_pages_remote(struct mm_struct *mm,
17081707
unsigned long start, unsigned long nr_pages,
17091708
unsigned int gup_flags, struct page **pages,
17101709
struct vm_area_struct **vmas, int *locked);
1711-
long pin_user_pages_remote(struct task_struct *tsk, struct mm_struct *mm,
1710+
long pin_user_pages_remote(struct mm_struct *mm,
17121711
unsigned long start, unsigned long nr_pages,
17131712
unsigned int gup_flags, struct page **pages,
17141713
struct vm_area_struct **vmas, int *locked);

0 commit comments

Comments
 (0)