question about fs/super.c

Ingo Molnar (mingo@pc5829.hil.siemens.at)
Thu, 24 Apr 1997 17:15:58 +0200 (MET DST)


anyone knows why we do this in copy_mount_options():

vma = find_vma(current->mm, (unsigned long) data);
if (!vma || (unsigned long) data < vma->vm_start)
return -EFAULT;
if (!(vma->vm_flags & VM_READ))
return -EFAULT;
i = vma->vm_end - (unsigned long) data;
if (PAGE_SIZE <= (unsigned long) i)
i = PAGE_SIZE-1;
if (!(page = __get_free_page(GFP_KERNEL))) {
return -ENOMEM;
}
if (copy_from_user((void *) page,data,i)) {
free_page(page);
return -EFAULT;
}

shouldnt this be enough:

if (!(page = __get_free_page(GFP_KERNEL)))
return -ENOMEM;
if (copy_from_user((void *) page,data,i)) {
free_page(page);
return -EFAULT;
}

? Or is this some early-boot-maybe-bolixed situation?

-- mingo