|
@@ -1813,10 +1813,13 @@ struct page *follow_page(struct vm_area_struct *vma, unsigned long address,
|
|
return NULL;
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
|
|
-int remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
|
|
|
|
- unsigned long to, unsigned long size, pgprot_t prot)
|
|
|
|
|
|
+int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr,
|
|
|
|
+ unsigned long pfn, unsigned long size, pgprot_t prot)
|
|
{
|
|
{
|
|
- vma->vm_start = vma->vm_pgoff << PAGE_SHIFT;
|
|
|
|
|
|
+ if (addr != (pfn << PAGE_SHIFT))
|
|
|
|
+ return -EINVAL;
|
|
|
|
+
|
|
|
|
+ vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP;
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
EXPORT_SYMBOL(remap_pfn_range);
|
|
EXPORT_SYMBOL(remap_pfn_range);
|