if (!PageReserved(page)) get_page(page);
get_page(page);
static struct page *snd_pcm_mmap_data_nopage(struct vm_area_struct *area, unsigned long address, int *type){	snd_pcm_substream_t *substream = (snd_pcm_substream_t *)area->vm_private_data;	snd_pcm_runtime_t *runtime;	unsigned long offset;	struct page * page;	void *vaddr;	size_t dma_bytes;		if (substream == NULL)		return NOPAGE_OOM;	runtime = substream->runtime;	offset = area->vm_pgoff << PAGE_SHIFT;	offset += address - area->vm_start;	snd_assert((offset % PAGE_SIZE) == 0, return NOPAGE_OOM);	dma_bytes = PAGE_ALIGN(runtime->dma_bytes);	if (offset > dma_bytes - PAGE_SIZE)		return NOPAGE_SIGBUS;	if (substream->ops->page) {		page = substream->ops->page(substream, offset);		if (! page)			return NOPAGE_OOM;	} else {		vaddr = runtime->dma_area + offset;		page = virt_to_page(vaddr);	}	if (!PageReserved(page))		get_page(page);	if (type)		*type = VM_FAULT_MINOR;	return page;}