uprobes/x86: Fold prepare_fixups() into arch_uprobe_analyze_insn()
authorOleg Nesterov <oleg@redhat.com>
Mon, 31 Mar 2014 13:16:22 +0000 (15:16 +0200)
committerOleg Nesterov <oleg@redhat.com>
Thu, 17 Apr 2014 19:58:16 +0000 (21:58 +0200)
commitddb69f276c4af8bb47ad4f24a72f72ddf58c228a
tree6d4daad064b45ec6be22199a84ffef9eccda25b5
parent8a6b173287bb94b3ef8360119020e856afb1c934
uprobes/x86: Fold prepare_fixups() into arch_uprobe_analyze_insn()

No functional changes, preparation.

Shift the code from prepare_fixups() to arch_uprobe_analyze_insn()
with the following modifications:

- Do not call insn_get_opcode() again, it was already called
  by validate_insn_bits().

- Move "case 0xea" up. This way "case 0xff" can fall through
  to default case.

- change "case 0xff" to use the nested "switch (MODRM_REG)",
  this way the code looks a bit simpler.

- Make the comments look consistent.

While at it, kill the initialization of rip_rela_target_address and
->fixups, we can rely on kzalloc(). We will add the new members into
arch_uprobe, it would be better to assume that everything is zero by
default.

TODO: cleanup/fix the mess in validate_insn_bits() paths:

- validate_insn_64bits() and validate_insn_32bits() should be
  unified.

- "ifdef" is not used consistently; if good_insns_64 depends
  on CONFIG_X86_64, then probably good_insns_32 should depend
  on CONFIG_X86_32/EMULATION

- the usage of mm->context.ia32_compat looks wrong if the task
  is TIF_X32.

Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Reviewed-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Reviewed-by: Jim Keniston <jkenisto@us.ibm.com>
Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
arch/x86/kernel/uprobes.c