Hi Masami, On Fri, 2026-11-13 at 18:32 +0900, Masami Hiramatsu (Google) wrote: > > With this change, the p->ainsn.insn becomes NULL here when kill_kprobe() > calls this function because (1) init.text is removed or (2) probed module > is unloaded. > > If another module is loaded at the same region and another kprobe > is registered at the same address, register_aggr_kprobe() -> > init_aggr_kprobe() -> flush_insn_slot(NULL) is called. This can > cause a problem because it is defined as: > > #define flush_insn_slot(p) \ > do { flushi(&(p)->ainsn.insn[0]); \ > flushi(&(p)->ainsn.insn[1]); \ > flushi(&(p)->ainsn.insn[2]); \ > } while (0) > > Since the flush_insn_slot() is only needed if p->ainsn.insn is > embedded in the struct kprobe, as this changed it to insn_slot, > we don't need this macro anymore. > So you should update it as same as other arch like: > > #define flush_insn_slot(p) do { } while (0) Thanks for the review, I'll test and adopt that change in v2. I'll check for any other feedback, then prepare the v2 later today. /Stian