Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

uio: nopage

Convert uio from nopage to fault.

Signed-off-by: Nick Piggin <npiggin@suse.de>
Acked-by: Hans J Koch <hjk@linutronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Nick Piggin and committed by
Linus Torvalds
a18b630d a1e09612

+6 -8
+6 -8
drivers/uio/uio.c
··· 417 417 idev->vma_count--; 418 418 } 419 419 420 - static struct page *uio_vma_nopage(struct vm_area_struct *vma, 421 - unsigned long address, int *type) 420 + static int uio_vma_fault(struct vm_area_struct *vma, struct vm_fault *vmf) 422 421 { 423 422 struct uio_device *idev = vma->vm_private_data; 424 - struct page* page = NOPAGE_SIGBUS; 423 + struct page *page; 425 424 426 425 int mi = uio_find_mem_index(vma); 427 426 if (mi < 0) 428 - return page; 427 + return VM_FAULT_SIGBUS; 429 428 430 429 if (idev->info->mem[mi].memtype == UIO_MEM_LOGICAL) 431 430 page = virt_to_page(idev->info->mem[mi].addr); 432 431 else 433 432 page = vmalloc_to_page((void*)idev->info->mem[mi].addr); 434 433 get_page(page); 435 - if (type) 436 - *type = VM_FAULT_MINOR; 437 - return page; 434 + vmf->page = page; 435 + return 0; 438 436 } 439 437 440 438 static struct vm_operations_struct uio_vm_ops = { 441 439 .open = uio_vma_open, 442 440 .close = uio_vma_close, 443 - .nopage = uio_vma_nopage, 441 + .fault = uio_vma_fault, 444 442 }; 445 443 446 444 static int uio_mmap_physical(struct vm_area_struct *vma)