| From aabd62eeadeb16f096eff9f11f67db15e25be67a Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 2 Sep 2020 09:59:40 +0530 |
| Subject: powerpc/watchpoint/ptrace: Fix SETHWDEBUG when |
| CONFIG_HAVE_HW_BREAKPOINT=N |
| |
| From: Ravi Bangoria <ravi.bangoria@linux.ibm.com> |
| |
| [ Upstream commit 9b6b7c680cc20971444d9f836e49fc98848bcd0a ] |
| |
| When kernel is compiled with CONFIG_HAVE_HW_BREAKPOINT=N, user can |
| still create watchpoint using PPC_PTRACE_SETHWDEBUG, with limited |
| functionalities. But, such watchpoints are never firing because of |
| the missing privilege settings. Fix that. |
| |
| It's safe to set HW_BRK_TYPE_PRIV_ALL because we don't really leak |
| any kernel address in signal info. Setting HW_BRK_TYPE_PRIV_ALL will |
| also help to find scenarios when kernel accesses user memory. |
| |
| Reported-by: Pedro Miraglia Franco de Carvalho <pedromfc@linux.ibm.com> |
| Suggested-by: Pedro Miraglia Franco de Carvalho <pedromfc@linux.ibm.com> |
| Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com> |
| Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> |
| Link: https://lore.kernel.org/r/20200902042945.129369-4-ravi.bangoria@linux.ibm.com |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/powerpc/kernel/ptrace/ptrace-noadv.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/arch/powerpc/kernel/ptrace/ptrace-noadv.c b/arch/powerpc/kernel/ptrace/ptrace-noadv.c |
| index 8bd8d8de5c40b..a570782e954be 100644 |
| --- a/arch/powerpc/kernel/ptrace/ptrace-noadv.c |
| +++ b/arch/powerpc/kernel/ptrace/ptrace-noadv.c |
| @@ -217,7 +217,7 @@ long ppc_set_hwdebug(struct task_struct *child, struct ppc_hw_breakpoint *bp_inf |
| return -EIO; |
| |
| brk.address = ALIGN_DOWN(bp_info->addr, HW_BREAKPOINT_SIZE); |
| - brk.type = HW_BRK_TYPE_TRANSLATE; |
| + brk.type = HW_BRK_TYPE_TRANSLATE | HW_BRK_TYPE_PRIV_ALL; |
| brk.len = DABR_MAX_LEN; |
| brk.hw_len = DABR_MAX_LEN; |
| if (bp_info->trigger_type & PPC_BREAKPOINT_TRIGGER_READ) |
| -- |
| 2.27.0 |
| |