Messages in this thread | | | Date | Wed, 2 Dec 2020 19:04:56 +0100 | From | Borislav Petkov <> | Subject | Re: [RFC PATCH v0 00/19] x86/insn: Add an insn_decode() API |
| |
On Tue, Dec 01, 2020 at 02:21:45AM +0900, Masami Hiramatsu wrote: > Because it overruns the buffer. Maybe -E2BIG/ENODATA or any other > error (except for -EINVAL) is OK :)
ENODATA it is. :)
And propagating that error value is easy because the err_out: labels are all coming from the validate_next() error path so we basically know that the buffer has ended.
./insn_sanity: Success: decoded and checked 10000 random instructions with 0 errors (seed:0x7bdfa56e) insn buffer: 0x48 0xcf 0x48 0x83 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90 0x90 supplied buf size: 15, ret 0 supplied buf size: 2, ret 0 supplied buf size: 3, ret 0 supplied buf size: 4, ret 0 insn_decode: entry insn_decode: will get_length insn_get_immediate: getting immediate insn_get_displacement: getting displacement insn_get_sib: getting sib insn_get_modrm: entry insn_get_opcode: entry insn_get_prefixes: entry, prefixes->got: 0 insn_get_prefixes: 1 insn_get_prefixes: REX insn_get_prefixes: VEX insn_get_prefixes: validate_next: 0 insn_get_prefixes: insn->next_byte: 0x7ffc211eb661, insn->end_kaddr: 0x7ffc211eb661 insn_get_prefixes: errored out supplied buf size: 1, ret -61
-- Regards/Gruss, Boris.
https://people.kernel.org/tglx/notes-about-netiquette
| |