lkml.org 
[lkml]   [2020]   [Oct]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.9 005/147] powerpc/watchpoint/ptrace: Fix SETHWDEBUG when CONFIG_HAVE_HW_BREAKPOINT=N
    Date
    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 697c7e4b5877f..57a0ab822334f 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;
    if (bp_info->trigger_type & PPC_BREAKPOINT_TRIGGER_READ)
    brk.type |= HW_BRK_TYPE_READ;
    --
    2.25.1
    \
     
     \ /
      Last update: 2020-10-27 01:39    [W:4.383 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site