/* This is the second or subsequent kprobe at the address - handle the intricacies  */
static int __kprobes register_aggr_kprobe(struct kprobe *old_p, struct kprobe *p)
/* This is the second or subsequent kprobe at the address - handle the intricacies  */
static int __kprobes register_aggr_kprobe(struct kprobe *old_p, struct kprobe *p)
{
	int ret = 0;
	struct kprobe *ap = old_p;
	if (old_p->pre_handler != aggr_pre_handler) {
		ap = kzalloc(sizeof(struct kprobe), GFP_KERNEL);
		if (!ap)
			return -ENOMEM;
		add_aggr_kprobe(ap, old_p);
	}
	if (kprobe_gone(ap)) {
		ret = arch_prepare_kprobe(ap);
		if (ret)
			return ret;
		ap->flags = (ap->flags & ~KPROBE_FLAG_GONE)
			    | KPROBE_FLAG_DISABLED;
	}
	copy_kprobe(ap, p);
	return add_new_kprobe(ap, p);
}