• Will Deacon's avatar
    arm64: Improve diagnostics when trapping BRK with FAULT_BRK_IMM · 0fdb64c2
    Will Deacon authored
    When generating instructions at runtime, for example due to kernel text
    patching or the BPF JIT, we can emit a trapping BRK instruction if we
    are asked to encode an invalid instruction such as an out-of-range]
    branch. This is indicative of a bug in the caller, and will result in a
    crash on executing the generated code. Unfortunately, the message from
    the crash is really unhelpful, and mumbles something about ptrace:
    
      | Unexpected kernel BRK exception at EL1
      | Internal error: ptrace BRK handler: f2000100 [#1] SMP
    
    We can do better than this. Install a break handler for FAULT_BRK_IMM,
    which is the immediate used to encode the "I've been asked to generate
    an invalid instruction" error, and triage the faulting PC to determine
    whether or not the failure occurred in the BPF JIT.
    
    Link: https://lore.kernel.org/r/20200915141707.GB26439@willie-the-truckReported-by: default avatarIlias Apalodimas <ilias.apalodimas@linaro.org>
    Signed-off-by: default avatarWill Deacon <will@kernel.org>
    0fdb64c2
traps.c 26.6 KB