On Tue, 28 Aug 2018, Matthew Wilcox wrote: > cramfs is the only remaining user of vm_insert_mixed; convert it. > > Signed-off-by: Matthew Wilcox <willy@xxxxxxxxxxxxx> > --- > fs/cramfs/inode.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/fs/cramfs/inode.c b/fs/cramfs/inode.c > index f408994fc632..b72449c19cd1 100644 > --- a/fs/cramfs/inode.c > +++ b/fs/cramfs/inode.c > @@ -417,10 +417,15 @@ static int cramfs_physmem_mmap(struct file *file, struct vm_area_struct *vma) > */ > int i; > vma->vm_flags |= VM_MIXEDMAP; > - for (i = 0; i < pages && !ret; i++) { > + for (i = 0; i < pages; i++) { > + vm_fault_t vmf; > unsigned long off = i * PAGE_SIZE; > pfn_t pfn = phys_to_pfn_t(address + off, PFN_DEV); > - ret = vm_insert_mixed(vma, vma->vm_start + off, pfn); > + vmf = vmf_insert_mixed(vma, vma->vm_start + off, pfn); > + if (vmf & VM_FAULT_ERROR) { > + pages = i; > + break; > + } I'd suggest this to properly deal with errers instead: diff --git a/fs/cramfs/inode.c b/fs/cramfs/inode.c index f408994fc6..0c35e62f10 100644 --- a/fs/cramfs/inode.c +++ b/fs/cramfs/inode.c @@ -418,9 +418,12 @@ static int cramfs_physmem_mmap(struct file *file, struct vm_area_struct *vma) int i; vma->vm_flags |= VM_MIXEDMAP; for (i = 0; i < pages && !ret; i++) { + vm_fault_t vmf; unsigned long off = i * PAGE_SIZE; pfn_t pfn = phys_to_pfn_t(address + off, PFN_DEV); - ret = vm_insert_mixed(vma, vma->vm_start + off, pfn); + vmf = vmf_insert_mixed(vma, vma->vm_start + off, pfn); + if (vmf & VM_FAULT_ERROR) + ret = vm_fault_to_errno(vmf, 0); } } Nicolas