while (instr->use) { set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(1); } 
while (instr->use) schedule_timeout_interruptible(1); 
int snd_seq_instr_list_free_cond(snd_seq_kinstr_list_t *list,			         snd_seq_instr_header_t *ifree,			         int client,			         int atomic){	snd_seq_kinstr_t *instr, *prev, *next, *flist;	int idx;	unsigned long flags;	snd_instr_lock_ops(list);	for (idx = 0; idx < SNDRV_SEQ_INSTR_HASH_SIZE; idx++) {		spin_lock_irqsave(&list->lock, flags);		instr = list->hash[idx];		prev = flist = NULL;		while (instr) {			while (instr && instr_free_compare(instr, ifree, (unsigned int)client)) {				prev = instr;				instr = instr->next;			}			if (instr == NULL)				continue;			if (instr->ops && instr->ops->notify)				instr->ops->notify(instr->ops->private_data, instr, SNDRV_SEQ_INSTR_NOTIFY_REMOVE);			next = instr->next;			if (prev == NULL) {				list->hash[idx] = next;			} else {				prev->next = next;			}			list->count--;			instr->next = flist;			flist = instr;			instr = next;		}		spin_unlock_irqrestore(&list->lock, flags);		while (flist) {			instr = flist;			flist = instr->next;			while (instr->use) {				set_current_state(TASK_INTERRUPTIBLE);				schedule_timeout(1);			}							if (snd_seq_instr_free(instr, atomic)<0)				snd_printk(KERN_WARNING "instrument free problem\n");			instr = next;		}	}	snd_instr_unlock_ops(list);	return 0;	}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/8433a509c0eb6bb1f33ce39c82c580b8901619ee/seq_instr.c/buggy/sound/core/seq/seq_instr.c