mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
mm: replace access_process_vm() write parameter with gup_flags
This removes the 'write' argument from access_process_vm() and replaces it with 'gup_flags' as use of this function previously silently implied FOLL_FORCE, whereas after this patch callers explicitly pass this flag. We make this explicit as use of FOLL_FORCE can result in surprising behaviour (and hence bugs) within the mm subsystem. Signed-off-by: Lorenzo Stoakes <[email protected]> Acked-by: Jesper Nilsson <[email protected]> Acked-by: Michal Hocko <[email protected]> Acked-by: Michael Ellerman <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
6347e8d5bc
commit
f307ab6dce
17 changed files with 84 additions and 54 deletions
|
|
@ -493,7 +493,8 @@ unregister_all_debug_traps(struct task_struct *child)
|
|||
int i;
|
||||
|
||||
for (i = 0; i < p->nr_trap; i++)
|
||||
access_process_vm(child, p->addr[i], &p->insn[i], sizeof(p->insn[i]), 1);
|
||||
access_process_vm(child, p->addr[i], &p->insn[i], sizeof(p->insn[i]),
|
||||
FOLL_FORCE | FOLL_WRITE);
|
||||
p->nr_trap = 0;
|
||||
}
|
||||
|
||||
|
|
@ -537,7 +538,8 @@ embed_debug_trap(struct task_struct *child, unsigned long next_pc)
|
|||
unsigned long next_insn, code;
|
||||
unsigned long addr = next_pc & ~3;
|
||||
|
||||
if (access_process_vm(child, addr, &next_insn, sizeof(next_insn), 0)
|
||||
if (access_process_vm(child, addr, &next_insn, sizeof(next_insn),
|
||||
FOLL_FORCE)
|
||||
!= sizeof(next_insn)) {
|
||||
return -1; /* error */
|
||||
}
|
||||
|
|
@ -546,7 +548,8 @@ embed_debug_trap(struct task_struct *child, unsigned long next_pc)
|
|||
if (register_debug_trap(child, next_pc, next_insn, &code)) {
|
||||
return -1; /* error */
|
||||
}
|
||||
if (access_process_vm(child, addr, &code, sizeof(code), 1)
|
||||
if (access_process_vm(child, addr, &code, sizeof(code),
|
||||
FOLL_FORCE | FOLL_WRITE)
|
||||
!= sizeof(code)) {
|
||||
return -1; /* error */
|
||||
}
|
||||
|
|
@ -562,7 +565,8 @@ withdraw_debug_trap(struct pt_regs *regs)
|
|||
addr = (regs->bpc - 2) & ~3;
|
||||
regs->bpc -= 2;
|
||||
if (unregister_debug_trap(current, addr, &code)) {
|
||||
access_process_vm(current, addr, &code, sizeof(code), 1);
|
||||
access_process_vm(current, addr, &code, sizeof(code),
|
||||
FOLL_FORCE | FOLL_WRITE);
|
||||
invalidate_cache();
|
||||
}
|
||||
}
|
||||
|
|
@ -589,7 +593,8 @@ void user_enable_single_step(struct task_struct *child)
|
|||
/* Compute next pc. */
|
||||
pc = get_stack_long(child, PT_BPC);
|
||||
|
||||
if (access_process_vm(child, pc&~3, &insn, sizeof(insn), 0)
|
||||
if (access_process_vm(child, pc&~3, &insn, sizeof(insn),
|
||||
FOLL_FORCE)
|
||||
!= sizeof(insn))
|
||||
return;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue