Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 041509db authored by Nick Piggin's avatar Nick Piggin Committed by Greg Kroah-Hartman
Browse files

USB: mon nopage



Convert USB mon driver from nopage to fault.

Signed-off-by: default avatarNick Piggin <npiggin@suse.de>
Acked-by: default avatarPete Zaitcev <zaitcev@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent d0fab0dd
Loading
Loading
Loading
Loading
+7 −9
Original line number Diff line number Diff line
@@ -1047,33 +1047,31 @@ static void mon_bin_vma_close(struct vm_area_struct *vma)
/*
 * Map ring pages to user space.
 */
struct page *mon_bin_vma_nopage(struct vm_area_struct *vma,
                                unsigned long address, int *type)
static int mon_bin_vma_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
{
	struct mon_reader_bin *rp = vma->vm_private_data;
	unsigned long offset, chunk_idx;
	struct page *pageptr;

	offset = (address - vma->vm_start) + (vma->vm_pgoff << PAGE_SHIFT);
	offset = vmf->pgoff << PAGE_SHIFT;
	if (offset >= rp->b_size)
		return NOPAGE_SIGBUS;
		return VM_FAULT_SIGBUS;
	chunk_idx = offset / CHUNK_SIZE;
	pageptr = rp->b_vec[chunk_idx].pg;
	get_page(pageptr);
	if (type)
		*type = VM_FAULT_MINOR;
	return pageptr;
	vmf->page = pageptr;
	return 0;
}

struct vm_operations_struct mon_bin_vm_ops = {
	.open =     mon_bin_vma_open,
	.close =    mon_bin_vma_close,
	.nopage =   mon_bin_vma_nopage,
	.fault =    mon_bin_vma_fault,
};

int mon_bin_mmap(struct file *filp, struct vm_area_struct *vma)
{
	/* don't do anything here: "nopage" will set up page table entries */
	/* don't do anything here: "fault" will set up page table entries */
	vma->vm_ops = &mon_bin_vm_ops;
	vma->vm_flags |= VM_RESERVED;
	vma->vm_private_data = filp->private_data;