On Thu, Aug 27, 2020 at 08:37:49PM +0900, Masami Hiramatsu wrote: > Free kretprobe_instance with rcu callback instead of directly > freeing the object in the kretprobe handler context. > > This will make kretprobe run safer in NMI context. > > Signed-off-by: Masami Hiramatsu <mhiramat@xxxxxxxxxx> > --- > include/linux/kprobes.h | 3 ++- > kernel/kprobes.c | 25 ++++++------------------- > 2 files changed, 8 insertions(+), 20 deletions(-) > > diff --git a/include/linux/kprobes.h b/include/linux/kprobes.h > index 46a7afcf5ec0..97557f820d9b 100644 > --- a/include/linux/kprobes.h > +++ b/include/linux/kprobes.h > @@ -160,6 +160,7 @@ struct kretprobe_instance { > struct kretprobe *rp; > kprobe_opcode_t *ret_addr; > struct task_struct *task; > + struct rcu_head rcu; > void *fp; > char data[]; > }; You can stick the rcu_head in a union with hlist.