lkml.org 
[lkml]   [2018]   [Apr]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 3.18 005/101] MIPS: kprobes: flush_insn_slot should flush only if probe initialised
    Date
    From: Marcin Nowakowski <marcin.nowakowski@imgtec.com>

    [ Upstream commit 698b851073ddf5a894910d63ca04605e0473414e ]

    When ftrace is used with kprobes, it is possible for a kprobe to contain
    an invalid location (ie. only initialised to 0 and not to a specific
    location in the code). Trying to perform a cache flush on such location
    leads to a crash r4k_flush_icache_range().

    Fixes: c1bf207d6ee1 ("MIPS: kprobe: Add support.")
    Signed-off-by: Marcin Nowakowski <marcin.nowakowski@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/16296/
    Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    arch/mips/include/asm/kprobes.h | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/arch/mips/include/asm/kprobes.h b/arch/mips/include/asm/kprobes.h
    index daba1f9a4f79..174aedce3167 100644
    --- a/arch/mips/include/asm/kprobes.h
    +++ b/arch/mips/include/asm/kprobes.h
    @@ -40,7 +40,8 @@ typedef union mips_instruction kprobe_opcode_t;

    #define flush_insn_slot(p) \
    do { \
    - flush_icache_range((unsigned long)p->addr, \
    + if (p->addr) \
    + flush_icache_range((unsigned long)p->addr, \
    (unsigned long)p->addr + \
    (MAX_INSN_SIZE * sizeof(kprobe_opcode_t))); \
    } while (0)
    --
    2.15.1
    \
     
     \ /
      Last update: 2018-04-09 03:04    [W:2.811 / U:0.652 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site