freedreno/drm: Fix memory leak in softpin implementation
authorLasse Lopperi <lasse.lopperi@ge.com>
Fri, 10 Jan 2020 08:47:55 +0000 (10:47 +0200)
committerMarge Bot <eric+marge@anholt.net>
Fri, 10 Jan 2020 16:21:35 +0000 (16:21 +0000)
Free the memory allocated for cmds/reloc_bos array when destoying the
associated ringbuffer.

For similar fix for the non-softpin implementation see:
https://gitlab.freedesktop.org/mesa/mesa/commit/d014af98b7afc69f4f733c8b8b6f2e3438e68407

Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/2324
Fixes: f3cc0d2 ("freedreno: import libdrm_freedreno + redesign submit")
Signed-off-by: Lasse Lopperi <lasse.lopperi@ge.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3342>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3342>

src/freedreno/drm/msm_ringbuffer_sp.c

index ec375a19938bb77e5b42dd3f95925281a0596ff6..41732858580d1a6d7446991ce980f94429d4e27c 100644 (file)
@@ -509,6 +509,7 @@ msm_ringbuffer_sp_destroy(struct fd_ringbuffer *ring)
                for (unsigned i = 0; i < msm_ring->u.nr_reloc_bos; i++) {
                        fd_bo_del(msm_ring->u.reloc_bos[i].bo);
                }
+               free(msm_ring->u.reloc_bos);
 
                free(msm_ring);
        } else {
@@ -517,6 +518,7 @@ msm_ringbuffer_sp_destroy(struct fd_ringbuffer *ring)
                for (unsigned i = 0; i < msm_ring->u.nr_cmds; i++) {
                        fd_bo_del(msm_ring->u.cmds[i].ring_bo);
                }
+               free(msm_ring->u.cmds);
 
                slab_free(&to_msm_submit_sp(submit)->ring_pool, msm_ring);
        }