set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(1); 
schedule_timeout_interruptible(1); 
static int instr_free(snd_seq_kinstr_ops_t *ops,		      snd_seq_kinstr_list_t *list,		      snd_seq_event_t *ev,		      int atomic, int hop){	snd_seq_instr_header_t ifree;	snd_seq_kinstr_t *instr, *prev;	int result = -EINVAL;	unsigned long flags;	unsigned int hash;	if ((ev->flags & SNDRV_SEQ_EVENT_LENGTH_MASK) != SNDRV_SEQ_EVENT_LENGTH_VARUSR)		goto __return;	if (ev->data.ext.len < sizeof(snd_seq_instr_header_t))		goto __return;	if (copy_from_user(&ifree, (void __user *)ev->data.ext.ptr, sizeof(snd_seq_instr_header_t))) {		result = -EFAULT;		goto __return;	}	if (ifree.cmd == SNDRV_SEQ_INSTR_FREE_CMD_ALL ||	    ifree.cmd == SNDRV_SEQ_INSTR_FREE_CMD_PRIVATE ||	    ifree.cmd == SNDRV_SEQ_INSTR_FREE_CMD_CLUSTER) {	    	result = snd_seq_instr_list_free_cond(list, &ifree, ev->dest.client, atomic);	    	goto __return;	}	if (ifree.cmd == SNDRV_SEQ_INSTR_FREE_CMD_SINGLE) {		if (ifree.id.instr.std & 0xff000000) {			ifree.id.instr.std &= 0x00ffffff;			ifree.id.instr.std |= (unsigned int)ev->source.client << 24;		}		hash = compute_hash_instr_key(&ifree.id.instr);		snd_instr_lock_ops(list);		spin_lock_irqsave(&list->lock, flags);		instr = list->hash[hash];		prev = NULL;		while (instr) {			if (!compare_instr(&instr->instr, &ifree.id.instr, 1))				goto __free_single;			prev = instr;			instr = instr->next;		}		result = -ENOENT;		spin_unlock_irqrestore(&list->lock, flags);		snd_instr_unlock_ops(list);		goto __return;			      __free_single:		if (prev) {			prev->next = instr->next;		} else {			list->hash[hash] = instr->next;		}		if (instr->ops && instr->ops->notify)			instr->ops->notify(instr->ops->private_data, instr, SNDRV_SEQ_INSTR_NOTIFY_REMOVE);		while (instr->use) {			spin_unlock_irqrestore(&list->lock, flags);			set_current_state(TASK_INTERRUPTIBLE);			schedule_timeout(1);			spin_lock_irqsave(&list->lock, flags);		}						spin_unlock_irqrestore(&list->lock, flags);		result = snd_seq_instr_free(instr, atomic);		snd_instr_unlock_ops(list);		goto __return;	}      __return:	instr_result(ev, SNDRV_SEQ_EVENT_INSTR_FREE, result, atomic);	return result;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/8433a509c0eb6bb1f33ce39c82c580b8901619ee/seq_instr.c/buggy/sound/core/seq/seq_instr.c