mbox series

[v4,0/4] arm64: Make NOP handling a whitelist

Message ID 20200504131326.18290-1-broonie@kernel.org (mailing list archive)
Headers show
Series arm64: Make NOP handling a whitelist | expand

Message

Mark Brown May 4, 2020, 1:13 p.m. UTC
Currently we default to assuming any unrecognized instruction in the
hint space can be safely handled as a NOP.  This is not robust and any
code that really wants a NOP should be using the explicitly defined NOP
so let's instead invert this and whitelist those instructions which it
is safe to handle as NOPs.

Patch 1 adds defines for the HINTs for BTI landing pads which will be
used by the in-kernel BTI series to generate landing pads in JITed BPF
code so it'd be good if this could be applied on or merged into the BTI
branch.

v4:
 - Add a patch renaming _is_nop() to make the usage clearer.
 - Reorder series and tweak commit logs.
v3:
 - Correct values for more of the HINTs.
 - Add constants for additional HINTs
 - Handle XPACLRI as a NOP along with all the other PAC HINTs.
 - Update commit messages for greater clarity.
 - Tweak the comment about what a NOP.
v2:
 - Fix values for BTI HINTs.
 - Rebase on v5.7-rc3+for-next/bti-user

Mark Brown (4):
  arm64: insn: Add constants for new HINT instruction decode
  arm64: insn: Provide a better name for aarch64_insn_is_nop()
  arm64: insn: Don't assume unrecognized HINTs are skippable
  arm64: insn: Report PAC and BTI instructions as skippable

 arch/arm64/include/asm/insn.h          | 30 +++++++++++++++++++++---
 arch/arm64/kernel/insn.c               | 32 ++++++++++++++++++--------
 arch/arm64/kernel/probes/decode-insn.c |  2 +-
 3 files changed, 50 insertions(+), 14 deletions(-)

Comments

Will Deacon May 4, 2020, 3:33 p.m. UTC | #1
On Mon, 4 May 2020 14:13:22 +0100, Mark Brown wrote:
> Currently we default to assuming any unrecognized instruction in the
> hint space can be safely handled as a NOP.  This is not robust and any
> code that really wants a NOP should be using the explicitly defined NOP
> so let's instead invert this and whitelist those instructions which it
> is safe to handle as NOPs.
> 
> Patch 1 adds defines for the HINTs for BTI landing pads which will be
> used by the in-kernel BTI series to generate landing pads in JITed BPF
> code so it'd be good if this could be applied on or merged into the BTI
> branch.
> 
> [...]

Applied to arm64 (for-next/insn), thanks!

[1/4] arm64: insn: Add constants for new HINT instruction decode
      https://git.kernel.org/arm64/c/bd507ca2773b
[2/4] arm64: insn: Provide a better name for aarch64_insn_is_nop()
      https://git.kernel.org/arm64/c/07dcd9677c5d
[3/4] arm64: insn: Don't assume unrecognized HINTs are skippable
      https://git.kernel.org/arm64/c/c71052cc9e14
[4/4] arm64: insn: Report PAC and BTI instructions as skippable
      https://git.kernel.org/arm64/c/47d67e4d1918

Cheers,