Hi Loic,

...

> +                                        unsigned int order)
>  {
>       struct vm_area_struct *vma = vmf->vma;
>       struct drm_gem_object *obj = vma->vm_private_data;
> @@ -582,6 +583,10 @@ static vm_fault_t drm_gem_shmem_fault(struct vm_fault 
> *vmf)
>       vm_fault_t ret;

we could initialize ret to VM_FAULT_FALLBACK and avoid the else's
and the default case.

>       struct page *page;
>       pgoff_t page_offset;
> +     unsigned long pfn;
> +#if defined(CONFIG_ARCH_SUPPORTS_PMD_PFNMAP) || 
> defined(CONFIG_ARCH_SUPPORTS_PUD_PFNMAP)
> +     unsigned long paddr;
> +#endif

we could declare paddr inside the switch case in order to avoid
some extra ifdefs.

>       /* We don't use vmf->pgoff since that has the fake offset */
>       page_offset = (vmf->address - vma->vm_start) >> PAGE_SHIFT;
> @@ -592,17 +597,57 @@ static vm_fault_t drm_gem_shmem_fault(struct vm_fault 
> *vmf)
>           drm_WARN_ON_ONCE(obj->dev, !shmem->pages) ||
>           shmem->madv < 0) {
>               ret = VM_FAULT_SIGBUS;
> -     } else {
> -             page = shmem->pages[page_offset];
> +             goto out;
> +     }
>  
> -             ret = vmf_insert_pfn(vma, vmf->address, page_to_pfn(page));
> +     page = shmem->pages[page_offset];
> +     pfn = page_to_pfn(page);
> +
> +     switch (order) {
> +     case 0:

'0' needs to be defined, what does '0' mean? (I know what it
means, but for consistency I think it should have its own name).

Andi

> +             ret = vmf_insert_pfn(vma, vmf->address, pfn);
> +             break;

Reply via email to