<div dir="ltr">Ping<br></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Nov 19, 2018 at 6:24 PM Marek Olšák <<a href="mailto:maraeo@gmail.com">maraeo@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">From: Marek Olšák <<a href="mailto:marek.olsak@amd.com" target="_blank">marek.olsak@amd.com</a>><br>
<br>
Cc: 18.2 18.3 <<a href="mailto:mesa-stable@lists.freedesktop.org" target="_blank">mesa-stable@lists.freedesktop.org</a>><br>
---<br>
 src/gallium/winsys/amdgpu/drm/amdgpu_bo.c | 6 ++++++<br>
 1 file changed, 6 insertions(+)<br>
<br>
diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c<br>
index f49fb47b80e..3ee38b8a79f 100644<br>
--- a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c<br>
+++ b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c<br>
@@ -1303,20 +1303,26 @@ static struct pb_buffer *amdgpu_bo_from_handle(struct radeon_winsys *rws,<br>
<br>
    simple_mtx_lock(&ws->bo_export_table_lock);<br>
    bo = util_hash_table_get(ws->bo_export_table, result.buf_handle);<br>
<br>
    /* If the amdgpu_winsys_bo instance already exists, bump the reference<br>
     * counter and return it.<br>
     */<br>
    if (bo) {<br>
       p_atomic_inc(&bo->base.reference.count);<br>
       simple_mtx_unlock(&ws->bo_export_table_lock);<br>
+<br>
+      /* Release the buffer handle, because we don't need it anymore.<br>
+       * This function is returning an existing buffer, which has its own<br>
+       * handle.<br>
+       */<br>
+      amdgpu_bo_free(result.buf_handle);<br>
       return &bo->base;<br>
    }<br>
<br>
    /* Get initial domains. */<br>
    r = amdgpu_bo_query_info(result.buf_handle, &info);<br>
    if (r)<br>
       goto error;<br>
<br>
    r = amdgpu_va_range_alloc(ws->dev, amdgpu_gpu_va_range_general,<br>
                              result.alloc_size, 1 << 20, 0, &va, &va_handle,<br>
-- <br>
2.17.1<br>
<br>
</blockquote></div>