put_task_struct(timer->task); timer->task = NULL; 
static void cleanup_timers(struct list_head *head,			   cputime_t utime, cputime_t stime,			   unsigned long long sched_time){	struct cpu_timer_list *timer, *next;	cputime_t ptime = cputime_add(utime, stime);	list_for_each_entry_safe(timer, next, head, entry) {		put_task_struct(timer->task);		timer->task = NULL;		list_del_init(&timer->entry);		if (cputime_lt(timer->expires.cpu, ptime)) {			timer->expires.cpu = cputime_zero;		} else {			timer->expires.cpu = cputime_sub(timer->expires.cpu,							 ptime);		}	}	++head;	list_for_each_entry_safe(timer, next, head, entry) {		put_task_struct(timer->task);		timer->task = NULL;		list_del_init(&timer->entry);		if (cputime_lt(timer->expires.cpu, utime)) {			timer->expires.cpu = cputime_zero;		} else {			timer->expires.cpu = cputime_sub(timer->expires.cpu,							 utime);		}	}	++head;	list_for_each_entry_safe(timer, next, head, entry) {		put_task_struct(timer->task);		timer->task = NULL;		list_del_init(&timer->entry);		if (timer->expires.sched < sched_time) {			timer->expires.sched = 0;		} else {			timer->expires.sched -= sched_time;		}	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/108150ea78003044e41150c75259447b2c0953b6/posix-cpu-timers.c/buggy/kernel/posix-cpu-timers.c