 out: timer->it_overrun_last = timer->it_overrun; timer->it_overrun = -1; ++timer->it_requeue_pending; 
void posix_cpu_timer_schedule(struct k_itimer *timer){	struct task_struct *p = timer->it.cpu.task;	union cpu_time_count now;	if (unlikely(p == NULL))		/*		 * The task was cleaned up already, no future firings.		 */		return;	/*	 * Fetch the current sample and update the timer's expiry time.	 */	if (CPUCLOCK_PERTHREAD(timer->it_clock)) {		cpu_clock_sample(timer->it_clock, p, &now);		bump_cpu_timer(timer, now);		if (unlikely(p->exit_state)) {			clear_dead_task(timer, now);			return;		}		read_lock(&tasklist_lock); /* arm_timer needs it.  */	} else {		read_lock(&tasklist_lock);		if (unlikely(p->signal == NULL)) {			/*			 * The process has been reaped.			 * We can't even collect a sample any more.			 */			put_task_struct(p);			timer->it.cpu.task = p = NULL;			timer->it.cpu.expires.sched = 0;			read_unlock(&tasklist_lock);			return;		} else if (unlikely(p->exit_state) && thread_group_empty(p)) {			/*			 * We've noticed that the thread is dead, but			 * not yet reaped.  Take this opportunity to			 * drop our task ref.			 */			clear_dead_task(timer, now);			read_unlock(&tasklist_lock);			return;		}		cpu_clock_sample_group(timer->it_clock, p, &now);		bump_cpu_timer(timer, now);		/* Leave the tasklist_lock locked for the call below.  */	}	/*	 * Now re-arm for the new expiry time.	 */	arm_timer(timer, now);	read_unlock(&tasklist_lock);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/708f430dcc50787d1c0b5c31962a5ff0dd8e35eb/posix-cpu-timers.c/buggy/kernel/posix-cpu-timers.c