Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux

Pull drm regression fix from Dave Airlie:
"This one fixes a sleep while locked regression that was introduced
earlier in 3.8."

* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
drm/ttm: fix fence locking in ttm_buffer_object_transfer, 2nd try

+8 -5
+8 -5
drivers/gpu/drm/ttm/ttm_bo_util.c
··· 429 429 struct ttm_bo_device *bdev = bo->bdev; 430 430 struct ttm_bo_driver *driver = bdev->driver; 431 431 432 - fbo = kzalloc(sizeof(*fbo), GFP_KERNEL); 432 + fbo = kmalloc(sizeof(*fbo), GFP_KERNEL); 433 433 if (!fbo) 434 434 return -ENOMEM; 435 435 ··· 448 448 fbo->vm_node = NULL; 449 449 atomic_set(&fbo->cpu_writers, 0); 450 450 451 - fbo->sync_obj = driver->sync_obj_ref(bo->sync_obj); 451 + spin_lock(&bdev->fence_lock); 452 + if (bo->sync_obj) 453 + fbo->sync_obj = driver->sync_obj_ref(bo->sync_obj); 454 + else 455 + fbo->sync_obj = NULL; 456 + spin_unlock(&bdev->fence_lock); 452 457 kref_init(&fbo->list_kref); 453 458 kref_init(&fbo->kref); 454 459 fbo->destroy = &ttm_transfered_destroy; ··· 666 661 */ 667 662 668 663 set_bit(TTM_BO_PRIV_FLAG_MOVING, &bo->priv_flags); 669 - 670 - /* ttm_buffer_object_transfer accesses bo->sync_obj */ 671 - ret = ttm_buffer_object_transfer(bo, &ghost_obj); 672 664 spin_unlock(&bdev->fence_lock); 673 665 if (tmp_obj) 674 666 driver->sync_obj_unref(&tmp_obj); 675 667 668 + ret = ttm_buffer_object_transfer(bo, &ghost_obj); 676 669 if (ret) 677 670 return ret; 678 671