while (!expired); 
while (time_before(jiffies, stop)); 
static int wait_for_stat(struct tpm_chip *chip, u8 mask, u8 val, u8 * data){	int expired = 0;	struct timer_list status_timer =	    TIMER_INITIALIZER(tpm_time_expired, jiffies + 10 * HZ,			      (unsigned long) &expired);	/* status immediately available check */	*data = inb(chip->vendor->base + NSC_STATUS);	if ((*data & mask) == val)		return 0;	/* wait for status */	add_timer(&status_timer);	do {		set_current_state(TASK_UNINTERRUPTIBLE);		schedule_timeout(TPM_TIMEOUT);		*data = inb(chip->vendor->base + 1);		if ((*data & mask) == val) {			del_singleshot_timer_sync(&status_timer);			return 0;		}	}	while (!expired);	return -EBUSY;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/700d8bdcd0fa815b08638b1e4d43b66d60cc6a8d/tpm_nsc.c/buggy/drivers/char/tpm/tpm_nsc.c