lkml.org 
[lkml]   [2018]   [Jun]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.16 232/279] uprobes/x86: Prohibit probing on MOV SS instruction
    Date
    4.16-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Masami Hiramatsu <mhiramat@kernel.org>

    [ Upstream commit 13ebe18c94f5b0665c01ae7fad2717ae959f4212 ]

    Since MOV SS and POP SS instructions will delay the exceptions until the
    next instruction is executed, single-stepping on it by uprobes must be
    prohibited.

    uprobe already rejects probing on POP SS (0x1f), but allows probing on MOV
    SS (0x8e and reg == 2). This checks the target instruction and if it is
    MOV SS or POP SS, returns -ENOTSUPP to reject probing.

    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Cc: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
    Cc: Francis Deslauriers <francis.deslauriers@efficios.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: "H . Peter Anvin" <hpa@zytor.com>
    Cc: Yonghong Song <yhs@fb.com>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: "David S . Miller" <davem@davemloft.net>
    Link: https://lkml.kernel.org/r/152587072544.17316.5950935243917346341.stgit@devbox
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/x86/kernel/uprobes.c | 4 ++++
    1 file changed, 4 insertions(+)

    --- a/arch/x86/kernel/uprobes.c
    +++ b/arch/x86/kernel/uprobes.c
    @@ -299,6 +299,10 @@ static int uprobe_init_insn(struct arch_
    if (is_prefix_bad(insn))
    return -ENOTSUPP;

    + /* We should not singlestep on the exception masking instructions */
    + if (insn_masking_exception(insn))
    + return -ENOTSUPP;
    +
    if (x86_64)
    good_insns = good_insns_64;
    else

    \
     
     \ /
      Last update: 2018-06-18 11:26    [W:2.974 / U:0.204 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site