char *page = (char *)__get_free_page(PAGE_SIZE); 
char *page = (char *)__get_free_page(GFP_KERNEL); 
static int dsp_read(char __user *buf, size_t len){	int count = len;	char *page = (char *)__get_free_page(PAGE_SIZE);	if (!page)		return -ENOMEM;	while (count > 0) {		int n, k;		unsigned long flags;		k = PAGE_SIZE;		if (k > count)			k = count;		/* Critical section: protect fifo in non-interrupt */		spin_lock_irqsave(&dev.lock, flags);		n = msnd_fifo_read(&dev.DARF, page, k);		spin_unlock_irqrestore(&dev.lock, flags);		if (copy_to_user(buf, page, n)) {			free_page((unsigned long)page);			return -EFAULT;		}		buf += n;		count -= n;		if (n == k && count)			continue;		if (!test_bit(F_READING, &dev.flags) && dev.mode & FMODE_READ) {			dev.last_recbank = -1;			if (chk_send_dsp_cmd(&dev, HDEX_RECORD_START) == 0)				set_bit(F_READING, &dev.flags);		}		if (dev.rec_ndelay) {			free_page((unsigned long)page);			return count == len ? -EAGAIN : len - count;		}		if (count > 0) {			set_bit(F_READBLOCK, &dev.flags);			if (!interruptible_sleep_on_timeout(				&dev.readblock,				get_rec_delay_jiffies(DAR_BUFF_SIZE)))				clear_bit(F_READING, &dev.flags);			clear_bit(F_READBLOCK, &dev.flags);			if (signal_pending(current)) {				free_page((unsigned long)page);				return -EINTR;			}		}	}	free_page((unsigned long)page);	return len - count;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/fa732f556896836e88cd662ee7a664c4db6d080d/msnd_pinnacle.c/buggy/sound/oss/msnd_pinnacle.c