Merge tag 'drm-misc-fixes-2021-11-11' of git://anongit.freedesktop.org/drm/drm-misc...
authorDave Airlie <airlied@redhat.com>
Fri, 12 Nov 2021 03:06:37 +0000 (13:06 +1000)
committerDave Airlie <airlied@redhat.com>
Fri, 12 Nov 2021 03:06:41 +0000 (13:06 +1000)
 * dma-buf: name_lock fixes
 * prime: Keep object ref during mmap
 * nouveau: Fix a refcount issue; Fix device removal; Protect client
   list with dedicated mutex; Fix address CE0 address calculation
 * ttm: Fix race condition during BO eviction

Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/YYzY6jeox9EeI15i@linux-uq9g.fritz.box
1  2 
drivers/dma-buf/dma-buf.c
drivers/gpu/drm/ttm/ttm_bo.c

index 35fe1cb5ad98dd0c781a197748fd330f4cfdcff7,92492e314bd9fa8ea12c550db255026094f2fc30..cc8f09bfa1a39c92de4981a443ee237e4896237d
@@@ -1366,11 -1398,23 +1368,12 @@@ static int dma_buf_debug_show(struct se
                                buf_obj->exp_name,
                                file_inode(buf_obj->file)->i_ino,
                                buf_obj->name ?: "");
+               spin_unlock(&buf_obj->name_lock);
  
 -              robj = buf_obj->resv;
 -              fence = dma_resv_excl_fence(robj);
 -              if (fence)
 -                      seq_printf(s, "\tExclusive fence: %s %s %ssignalled\n",
 -                                 fence->ops->get_driver_name(fence),
 -                                 fence->ops->get_timeline_name(fence),
 -                                 dma_fence_is_signaled(fence) ? "" : "un");
 -
 -              fobj = rcu_dereference_protected(robj->fence,
 -                                               dma_resv_held(robj));
 -              shared_count = fobj ? fobj->shared_count : 0;
 -              for (i = 0; i < shared_count; i++) {
 -                      fence = rcu_dereference_protected(fobj->shared[i],
 -                                                        dma_resv_held(robj));
 -                      seq_printf(s, "\tShared fence: %s %s %ssignalled\n",
 +              dma_resv_for_each_fence(&cursor, buf_obj->resv, true, fence) {
 +                      seq_printf(s, "\t%s fence: %s %s %ssignalled\n",
 +                                 dma_resv_iter_is_exclusive(&cursor) ?
 +                                      "Exclusive" : "Shared",
                                   fence->ops->get_driver_name(fence),
                                   fence->ops->get_timeline_name(fence),
                                   dma_fence_is_signaled(fence) ? "" : "un");
Simple merge