if(need_resched()){ current->state = TASK_INTERRUPTIBLE; schedule_timeout(1); } 
if(need_resched()) schedule_timeout_interruptible(1); 
static ssize_t rng_dev_read (struct file *filp, char __user *buf, size_t size,                             loff_t * offp){        u32 data;        int n, ret = 0, have_data;        while(size){                n = os_read_file(random_fd, &data, sizeof(data));                if(n > 0){                        have_data = n;                        while (have_data && size) {                                if (put_user((u8)data, buf++)) {                                        ret = ret ? : -EFAULT;                                        break;                                }                                size--;                                ret++;                                have_data--;                                data>>=8;                        }                }                else if(n == -EAGAIN){                        if (filp->f_flags & O_NONBLOCK)                                return ret ? : -EAGAIN;                        if(need_resched()){                                current->state = TASK_INTERRUPTIBLE;                                schedule_timeout(1);                        }                }                else return n;		if (signal_pending (current))			return ret ? : -ERESTARTSYS;	}	return ret;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/bc874d174b224c016adac85fc9dd6da1161ffc57/random.c/buggy/arch/um/drivers/random.c