On 08/09, Sebastian Andrzej Siewior wrote:
>
> v1..v2: re-use auprobe->fixups for fixups

Yes, but

> @@ -46,6 +46,8 @@ struct arch_uprobe_task {
>  #ifdef CONFIG_X86_64
>       unsigned long                   saved_scratch_register;
>  #endif
> +#define UPROBE_CLEAR_TF                      (1 << 0)
> +     unsigned int                    restore_flags;
>  };

this patch still adds restore_flags into arch_uprobe_task.

>  static void prepare_fixups(struct arch_uprobe *auprobe, struct insn *insn)
>  {
> -     bool fix_ip = true, fix_call = false;   /* defaults */
> +     bool fix_ip = true, fix_call = false, fix_tf = false;   /* defaults */
>       int reg;
>  
>       insn_get_opcode(insn);  /* should be a nop */
>  
>       switch (OPCODE1(insn)) {
> +     case 0x9d:
> +             /* popf */
> +             fix_tf = true;
> +             break;
>       case 0xc3:              /* ret/lret */
>       case 0xcb:
>       case 0xc2:
> @@ -277,6 +284,8 @@ static void prepare_fixups(struct arch_uprobe *auprobe, 
> struct insn *insn)
>               auprobe->fixups |= UPROBE_FIX_IP;
>       if (fix_call)
>               auprobe->fixups |= UPROBE_FIX_CALL;
> +     if (fix_tf)
> +             auprobe->fixups |= UPROBE_TF_CHANGES;
>  }

I won't insist, but do we really need fix_tf? "case 0x9d" could simply
add UPROBE_TF_CHANGES.

Oleg.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to