/* Fill in the required fields of the "manager kprobe". Replace the earlier kprobe in the hlist with the manager kprobe  */
static void add_aggr_kprobe(struct kprobe *ap, struct kprobe *p)
/* Fill in the required fields of the "manager kprobe". Replace the earlier kprobe in the hlist with the manager kprobe  */
static void add_aggr_kprobe(struct kprobe *ap, struct kprobe *p)
{
	copy_kprobe(p, ap);
	flush_insn_slot(ap);
	ap->addr = p->addr;
	ap->flags = p->flags;
	ap->pre_handler = aggr_pre_handler;
	ap->fault_handler = aggr_fault_handler;
	if (p->post_handler && !kprobe_gone(p))
		ap->post_handler = aggr_post_handler;
	if (p->break_handler && !kprobe_gone(p))
		ap->break_handler = aggr_break_handler;
	INIT_LIST_HEAD(&ap->list);
	list_add_rcu(&p->list, &ap->list);
	hlist_replace_rcu(&p->hlist, &ap->hlist);
}