diff options
Diffstat (limited to 'arch/m32r/kernel/ptrace.c')
| -rw-r--r-- | arch/m32r/kernel/ptrace.c | 15 | 
1 files changed, 10 insertions, 5 deletions
diff --git a/arch/m32r/kernel/ptrace.c b/arch/m32r/kernel/ptrace.c index 51f5e9aa4901..c145605a981f 100644 --- a/arch/m32r/kernel/ptrace.c +++ b/arch/m32r/kernel/ptrace.c @@ -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;  |