On Tue, 2014-04-22 at 16:47 +0200, Oleg Nesterov wrote:
> Finally we can move arch_uprobe->fixups/rip_rela_target_address
> into the new "def" struct and place this struct in the union, they
> are only used by default_xol_ops paths.
> 
> The patch also renames rip_rela_target_address to riprel_target just
> to make this name shorter.
> 
> Signed-off-by: Oleg Nesterov <[email protected]>

I see a couple of nits in this patch (see below), but the others look
good.

Patches 1-5 of this set:
Reviewed-by: Jim Keniston <[email protected]>

> ---
>  arch/x86/include/asm/uprobes.h |   12 ++++++----
>  arch/x86/kernel/uprobes.c      |   41 +++++++++++++++++++--------------------
>  2 files changed, 27 insertions(+), 26 deletions(-)
> 
> diff --git a/arch/x86/include/asm/uprobes.h b/arch/x86/include/asm/uprobes.h
> index 93bee7b..72caff7 100644
> --- a/arch/x86/include/asm/uprobes.h
> +++ b/arch/x86/include/asm/uprobes.h
> @@ -41,18 +41,20 @@ struct arch_uprobe {
>               u8                      ixol[MAX_UINSN_BYTES];
>       };
> 
> -     u16                             fixups;
>       const struct uprobe_xol_ops     *ops;
> 
>       union {
> -#ifdef CONFIG_X86_64
> -             unsigned long                   rip_rela_target_address;
> -#endif
>               struct {
>                       s32     offs;
>                       u8      ilen;
>                       u8      opc1;
> -             }                               branch;
> +             }                       branch;
> +             struct {
> +#ifdef CONFIG_X86_64
> +                     long    riprel_target;
> +#endif
> +                     u16     fixups;
> +             }                       def;

"def" is kind of ambiguous.  How about "dfault" or some such?

>       };
>  };
> 
> diff --git a/arch/x86/kernel/uprobes.c b/arch/x86/kernel/uprobes.c
> index e6314a2..69b2d61 100644
> --- a/arch/x86/kernel/uprobes.c
> +++ b/arch/x86/kernel/uprobes.c
...
> @@ -636,12 +635,12 @@ int arch_uprobe_analyze_insn(struct arch_uprobe 
> *auprobe, struct mm_struct *mm,
> 
>       /*
>        * Figure out which fixups arch_uprobe_post_xol() will need to perform,
> -      * and annotate arch_uprobe->fixups accordingly. To start with, ->fixups
> -      * is either zero or it reflects rip-related fixups.
> +      * and annotate def->fixups accordingly. To start with, ->fixups is
> +      * either zero or it reflects rip-related fixups.

That sentence stopped being true a couple of patch sets ago.
handle_riprel_insn() is called later in this function now.

>        */
>       switch (OPCODE1(&insn)) {
>       case 0x9d:              /* popf */
> -             auprobe->fixups |= UPROBE_FIX_SETF;
> +             auprobe->def.fixups |= UPROBE_FIX_SETF;
>               break;
>       case 0xc3:              /* ret or lret -- ip is correct */
>       case 0xcb:
> @@ -669,9 +668,9 @@ int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe, 
> struct mm_struct *mm,
>       }
> 
>       if (fix_ip)
> -             auprobe->fixups |= UPROBE_FIX_IP;
> +             auprobe->def.fixups |= UPROBE_FIX_IP;
>       if (fix_call)
> -             auprobe->fixups |= UPROBE_FIX_CALL;
> +             auprobe->def.fixups |= UPROBE_FIX_CALL;
> 
>       auprobe->ops = &default_xol_ops;
>       return 0;

Jim

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
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