} else {  goto no_kprobe;
static int pre_kprobes_handler(struct pt_regs *regs){	struct kprobe *p;	int ret = 0;	kprobe_opcode_t *addr = (kprobe_opcode_t *)instruction_pointer(regs);	preempt_disable();	/* Handle recursion cases */	if (kprobe_running()) {		p = get_kprobe(addr);		if (p) {			if (kprobe_status == KPROBE_HIT_SS) {				unlock_kprobes();				goto no_kprobe;			}			arch_disarm_kprobe(p);			ret = 1;		} else {			/*			 * jprobe instrumented function just completed			 */			p = current_kprobe;			if (p->break_handler && p->break_handler(p, regs)) {				goto ss_probe;			}		}	}	lock_kprobes();	p = get_kprobe(addr);	if (!p) {		unlock_kprobes();		goto no_kprobe;	}	kprobe_status = KPROBE_HIT_ACTIVE;	current_kprobe = p;	if (p->pre_handler && p->pre_handler(p, regs))		/*		 * Our pre-handler is specifically requesting that we just		 * do a return.  This is handling the case where the		 * pre-handler is really our special jprobe pre-handler.		 */		return 1;ss_probe:	prepare_ss(p, regs);	kprobe_status = KPROBE_HIT_SS;	return 1;no_kprobe:	preempt_enable_no_resched();	return ret;}