]> Pileus Git - ~andy/linux/blobdiff - drivers/gpu/drm/ttm/ttm_bo_vm.c
drm/ttm: Optimize vm locking using kref_get_unless_zero v3
[~andy/linux] / drivers / gpu / drm / ttm / ttm_bo_vm.c
index 3ba72dbdc4bd68495030c047b4b1ae87c7b9e13a..74705f329d992cb2a52b1f43f98ac0b4afe2155e 100644 (file)
@@ -259,8 +259,8 @@ int ttm_bo_mmap(struct file *filp, struct vm_area_struct *vma,
        read_lock(&bdev->vm_lock);
        bo = ttm_bo_vm_lookup_rb(bdev, vma->vm_pgoff,
                                 (vma->vm_end - vma->vm_start) >> PAGE_SHIFT);
-       if (likely(bo != NULL))
-               ttm_bo_reference(bo);
+       if (likely(bo != NULL) && !kref_get_unless_zero(&bo->kref))
+               bo = NULL;
        read_unlock(&bdev->vm_lock);
 
        if (unlikely(bo == NULL)) {