/* set up a shared mapping on a file (the driver or filesystem provides and pins the storage)  */
static int do_mmap_shared_file(struct vm_area_struct *vma)
/* set up a shared mapping on a file (the driver or filesystem provides and pins the storage)  */
static int do_mmap_shared_file(struct vm_area_struct *vma)
{
	int ret;
	ret = vma->vm_file->f_op->mmap(vma->vm_file, vma);
	if (ret == 0) {
		vma->vm_region->vm_top = vma->vm_region->vm_end;
		return 0;
	}
	if (ret != -ENOSYS)
		return ret;
	return -ENODEV;
}