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 <lstoakes@gmail.com> Acked-by: Jesper Nilsson <jesper.nilsson@axis.com> Acked-by: Michal Hocko <mhocko@suse.com> Acked-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
6347e8d5bc
commit
f307ab6dce
@@ -157,14 +157,16 @@ put_reg(struct task_struct *task, unsigned long regno, unsigned long data)
|
||||
static inline int
|
||||
read_int(struct task_struct *task, unsigned long addr, int * data)
|
||||
{
|
||||
int copied = access_process_vm(task, addr, data, sizeof(int), 0);
|
||||
int copied = access_process_vm(task, addr, data, sizeof(int),
|
||||
FOLL_FORCE);
|
||||
return (copied == sizeof(int)) ? 0 : -EIO;
|
||||
}
|
||||
|
||||
static inline int
|
||||
write_int(struct task_struct *task, unsigned long addr, int data)
|
||||
{
|
||||
int copied = access_process_vm(task, addr, &data, sizeof(int), 1);
|
||||
int copied = access_process_vm(task, addr, &data, sizeof(int),
|
||||
FOLL_FORCE | FOLL_WRITE);
|
||||
return (copied == sizeof(int)) ? 0 : -EIO;
|
||||
}
|
||||
|
||||
@@ -281,7 +283,8 @@ long arch_ptrace(struct task_struct *child, long request,
|
||||
/* When I and D space are separate, these will need to be fixed. */
|
||||
case PTRACE_PEEKTEXT: /* read word at location addr. */
|
||||
case PTRACE_PEEKDATA:
|
||||
copied = access_process_vm(child, addr, &tmp, sizeof(tmp), 0);
|
||||
copied = access_process_vm(child, addr, &tmp, sizeof(tmp),
|
||||
FOLL_FORCE);
|
||||
ret = -EIO;
|
||||
if (copied != sizeof(tmp))
|
||||
break;
|
||||
|
Reference in New Issue
Block a user