LoongArch architecture development
 help / color / mirror / Atom feed
  • * [PATCH] LoongArch: uprobes: make UPROBE_SWBP_INSN/UPROBE_XOLBP_INSN constant
           [not found] <20240618194306.1577022-1-jolsa@kernel.org>
           [not found] ` <CAEf4BzbN4Li2iesQm28ZYEV2nXsLre8_qknmvkSy510EV7h=SA@mail.gmail.com>
    @ 2024-06-27 16:02 ` Oleg Nesterov
      2024-06-27 16:51   ` Andrii Nakryiko
      1 sibling, 1 reply; 16+ messages in thread
    From: Oleg Nesterov @ 2024-06-27 16:02 UTC (permalink / raw)
      To: Tiezhu Yang, Jiri Olsa, Steven Rostedt, Masami Hiramatsu
      Cc: Andrii Nakryiko, Nathan Chancellor, linux-kernel,
    	linux-trace-kernel, bpf, Huacai Chen, WANG Xuerui, loongarch
    
    LoongArch defines UPROBE_SWBP_INSN as a function call and this breaks
    arch_uprobe_trampoline() which uses it to initialize a static variable.
    
    Fixes: ff474a78cef5 ("uprobe: Add uretprobe syscall to speed up return probe")
    Reported-by: Nathan Chancellor <nathan@kernel.org>
    Closes: https://lore.kernel.org/all/20240614174822.GA1185149@thelio-3990X/
    Suggested-by: Andrii Nakryiko <andrii@kernel.org>
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    ---
     arch/loongarch/include/asm/uprobes.h | 6 ++++--
     arch/loongarch/kernel/uprobes.c      | 8 ++++++++
     2 files changed, 12 insertions(+), 2 deletions(-)
    
    diff --git a/arch/loongarch/include/asm/uprobes.h b/arch/loongarch/include/asm/uprobes.h
    index c8f59983f702..18221eb9a8b0 100644
    --- a/arch/loongarch/include/asm/uprobes.h
    +++ b/arch/loongarch/include/asm/uprobes.h
    @@ -6,13 +6,15 @@
     
     typedef u32 uprobe_opcode_t;
     
    +#define __emit_break(imm)	(uprobe_opcode_t)((imm) | (break_op << 15))
    +
     #define MAX_UINSN_BYTES		8
     #define UPROBE_XOL_SLOT_BYTES	MAX_UINSN_BYTES
     
    -#define UPROBE_SWBP_INSN	larch_insn_gen_break(BRK_UPROBE_BP)
    +#define UPROBE_SWBP_INSN	__emit_break(BRK_UPROBE_BP)
     #define UPROBE_SWBP_INSN_SIZE	LOONGARCH_INSN_SIZE
     
    -#define UPROBE_XOLBP_INSN	larch_insn_gen_break(BRK_UPROBE_XOLBP)
    +#define UPROBE_XOLBP_INSN	__emit_break(BRK_UPROBE_XOLBP)
     
     struct arch_uprobe {
     	unsigned long	resume_era;
    diff --git a/arch/loongarch/kernel/uprobes.c b/arch/loongarch/kernel/uprobes.c
    index 87abc7137b73..90462d94c28f 100644
    --- a/arch/loongarch/kernel/uprobes.c
    +++ b/arch/loongarch/kernel/uprobes.c
    @@ -7,6 +7,14 @@
     
     #define UPROBE_TRAP_NR	UINT_MAX
     
    +static __init int check_emit_break(void)
    +{
    +	BUG_ON(UPROBE_SWBP_INSN  != larch_insn_gen_break(BRK_UPROBE_BP));
    +	BUG_ON(UPROBE_XOLBP_INSN != larch_insn_gen_break(BRK_UPROBE_XOLBP));
    +	return 0;
    +}
    +arch_initcall(check_emit_break);
    +
     int arch_uprobe_analyze_insn(struct arch_uprobe *auprobe,
     			     struct mm_struct *mm, unsigned long addr)
     {
    -- 
    2.25.1.362.g51ebf55
    
    
    
    ^ permalink raw reply related	[flat|nested] 16+ messages in thread

  • end of thread, other threads:[~2024-07-01 15:01 UTC | newest]
    
    Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <20240618194306.1577022-1-jolsa@kernel.org>
         [not found] ` <CAEf4BzbN4Li2iesQm28ZYEV2nXsLre8_qknmvkSy510EV7h=SA@mail.gmail.com>
         [not found]   ` <20240620193846.GA7165@redhat.com>
         [not found]     ` <CAEf4BzaqgbjPfxKmzF-M7nzGroOwKikA0BM7Tnw7dKzKS+x9ZQ@mail.gmail.com>
         [not found]       ` <20240621120149.GB12521@redhat.com>
    2024-06-21 13:17         ` [PATCH] uprobe: Do not use UPROBE_SWBP_INSN as static initializer Jiri Olsa
    2024-06-27 13:44           ` Jiri Olsa
    2024-06-27 14:20             ` Masami Hiramatsu
    2024-06-27 15:29               ` Oleg Nesterov
    2024-06-27 16:02 ` [PATCH] LoongArch: uprobes: make UPROBE_SWBP_INSN/UPROBE_XOLBP_INSN constant Oleg Nesterov
    2024-06-27 16:51   ` Andrii Nakryiko
    2024-06-27 17:38     ` Oleg Nesterov
    2024-06-28  4:30       ` Masami Hiramatsu
    2024-06-29 12:48       ` Tiezhu Yang
    2024-06-29 13:38         ` Oleg Nesterov
    2024-06-29 13:48           ` Huacai Chen
    2024-06-29 15:03             ` [PATCH] LoongArch: make the users of larch_insn_gen_break() constant Oleg Nesterov
    2024-06-30  1:43               ` Huacai Chen
    2024-06-30  6:29                 ` Oleg Nesterov
    2024-07-01  6:22               ` Tiezhu Yang
    2024-07-01 15:01                 ` Huacai Chen
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox