• Marcin Nowakowski's avatar
    MIPS: tracing: disable uprobe/kprobe on compact branch instructions · d05c5130
    Marcin Nowakowski authored
    Current instruction decoder for uprobe/kprobe handler only handles
    branches with delay slots. For compact branches the behaviour is rather
    unpredictable - and depending on the encoding of a compact branch
    instruction may result in one (or more) of:
    - executing an instruction that follows a branch which wasn't in a delay
      slot and shouldn't have been executed
    - incorrectly emulating a branch leading to a jump to a wrong location
    - unexpected branching out of the single-stepped code and never reaching
      the breakpoint that should terminate the probe handler
    
    Results of these actions are generally unpredictable, but can end up
    with a probed application or kernel crash, so disable placing probes on
    compact branches until they are handled properly.
    Signed-off-by: default avatarMarcin Nowakowski <marcin.nowakowski@imgtec.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/14336/Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
    d05c5130
kprobes.c 16.1 KB