x86/uprobes: Convert to insn_decode()
authorBorislav Petkov <bp@suse.de>
Tue, 17 Nov 2020 14:26:12 +0000 (15:26 +0100)
committerBorislav Petkov <bp@suse.de>
Mon, 15 Mar 2021 11:05:03 +0000 (12:05 +0100)
Simplify code, no functional changes.

Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20210304174237.31945-16-bp@alien8.de
arch/x86/kernel/uprobes.c

index a2b4133..b63cf8f 100644 (file)
@@ -276,12 +276,12 @@ static bool is_prefix_bad(struct insn *insn)
 
 static int uprobe_init_insn(struct arch_uprobe *auprobe, struct insn *insn, bool x86_64)
 {
+       enum insn_mode m = x86_64 ? INSN_MODE_64 : INSN_MODE_32;
        u32 volatile *good_insns;
+       int ret;
 
-       insn_init(insn, auprobe->insn, sizeof(auprobe->insn), x86_64);
-       /* has the side-effect of processing the entire instruction */
-       insn_get_length(insn);
-       if (!insn_complete(insn))
+       ret = insn_decode(insn, auprobe->insn, sizeof(auprobe->insn), m);
+       if (ret < 0)
                return -ENOEXEC;
 
        if (is_prefix_bad(insn))