Message ID | 20200504131326.18290-5-broonie@kernel.org (mailing list archive) |
---|---|
State | Mainlined |
Commit | 47d67e4d19184ec9f8091c98ad4df0411baa8719 |
Headers | show |
Series | arm64: Make NOP handling a whitelist | expand |
On Mon, May 04, 2020 at 02:13:26PM +0100, Mark Brown wrote: > The PAC and BTI instructions can be safely skipped so report them as > such, allowing them to be probed. > > Signed-off-by: Mark Brown <broonie@kernel.org> > Acked-by: Catalin Marinas <catalin.marinas@arm.com> These all look safe to step in a XOL area, so: Acked-by: Mark Rutland <mark.rutland@arm.com> > --- > arch/arm64/kernel/insn.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/arch/arm64/kernel/insn.c b/arch/arm64/kernel/insn.c > index 15c3f0643e3b..6439af794ec4 100644 > --- a/arch/arm64/kernel/insn.c > +++ b/arch/arm64/kernel/insn.c > @@ -57,6 +57,23 @@ bool __kprobes aarch64_insn_is_steppable_hint(u32 insn) > return false; > > switch (insn & 0xFE0) { > + case AARCH64_INSN_HINT_XPACLRI: > + case AARCH64_INSN_HINT_PACIA_1716: > + case AARCH64_INSN_HINT_PACIB_1716: > + case AARCH64_INSN_HINT_AUTIA_1716: > + case AARCH64_INSN_HINT_AUTIB_1716: > + case AARCH64_INSN_HINT_PACIAZ: > + case AARCH64_INSN_HINT_PACIASP: > + case AARCH64_INSN_HINT_PACIBZ: > + case AARCH64_INSN_HINT_PACIBSP: > + case AARCH64_INSN_HINT_AUTIAZ: > + case AARCH64_INSN_HINT_AUTIASP: > + case AARCH64_INSN_HINT_AUTIBZ: > + case AARCH64_INSN_HINT_AUTIBSP: > + case AARCH64_INSN_HINT_BTI: > + case AARCH64_INSN_HINT_BTIC: > + case AARCH64_INSN_HINT_BTIJ: > + case AARCH64_INSN_HINT_BTIJC: Just to check -- do we set the GP flag when creating/mapping the XOL area? If that's PAGE_KERNEL_EXEC, presumably we do. Mark. > case AARCH64_INSN_HINT_NOP: > return true; > default: > -- > 2.20.1 >
diff --git a/arch/arm64/kernel/insn.c b/arch/arm64/kernel/insn.c index 15c3f0643e3b..6439af794ec4 100644 --- a/arch/arm64/kernel/insn.c +++ b/arch/arm64/kernel/insn.c @@ -57,6 +57,23 @@ bool __kprobes aarch64_insn_is_steppable_hint(u32 insn) return false; switch (insn & 0xFE0) { + case AARCH64_INSN_HINT_XPACLRI: + case AARCH64_INSN_HINT_PACIA_1716: + case AARCH64_INSN_HINT_PACIB_1716: + case AARCH64_INSN_HINT_AUTIA_1716: + case AARCH64_INSN_HINT_AUTIB_1716: + case AARCH64_INSN_HINT_PACIAZ: + case AARCH64_INSN_HINT_PACIASP: + case AARCH64_INSN_HINT_PACIBZ: + case AARCH64_INSN_HINT_PACIBSP: + case AARCH64_INSN_HINT_AUTIAZ: + case AARCH64_INSN_HINT_AUTIASP: + case AARCH64_INSN_HINT_AUTIBZ: + case AARCH64_INSN_HINT_AUTIBSP: + case AARCH64_INSN_HINT_BTI: + case AARCH64_INSN_HINT_BTIC: + case AARCH64_INSN_HINT_BTIJ: + case AARCH64_INSN_HINT_BTIJC: case AARCH64_INSN_HINT_NOP: return true; default: