diff options
Diffstat (limited to 'bcm283x-drm-vc4-fix-mem-leak.patch')
-rw-r--r-- | bcm283x-drm-vc4-fix-mem-leak.patch | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/bcm283x-drm-vc4-fix-mem-leak.patch b/bcm283x-drm-vc4-fix-mem-leak.patch new file mode 100644 index 000000000..58ffce722 --- /dev/null +++ b/bcm283x-drm-vc4-fix-mem-leak.patch @@ -0,0 +1,54 @@ +From c0db1b677e1d584fab5d7ac76a32e1c0157542e0 Mon Sep 17 00:00:00 2001 +From: Daniel J Blueman <daniel@quora.org> +Date: Mon, 2 Apr 2018 15:10:35 +0800 +Subject: drm/vc4: Fix memory leak during BO teardown + +During BO teardown, an indirect list 'uniform_addr_offsets' wasn't being +freed leading to leaking many 128B allocations. Fix the memory leak by +releasing it at teardown time. + +Cc: stable@vger.kernel.org +Fixes: 6d45c81d229d ("drm/vc4: Add support for branching in shader validation.") +Signed-off-by: Daniel J Blueman <daniel@quora.org> +Signed-off-by: Eric Anholt <eric@anholt.net> +Reviewed-by: Eric Anholt <eric@anholt.net> +Link: https://patchwork.freedesktop.org/patch/msgid/20180402071035.25356-1-daniel@quora.org +--- + drivers/gpu/drm/vc4/vc4_bo.c | 2 ++ + drivers/gpu/drm/vc4/vc4_validate_shaders.c | 1 + + 2 files changed, 3 insertions(+) + +diff --git a/drivers/gpu/drm/vc4/vc4_bo.c b/drivers/gpu/drm/vc4/vc4_bo.c +index 2decc8e..add9cc9 100644 +--- a/drivers/gpu/drm/vc4/vc4_bo.c ++++ b/drivers/gpu/drm/vc4/vc4_bo.c +@@ -195,6 +195,7 @@ static void vc4_bo_destroy(struct vc4_bo *bo) + vc4_bo_set_label(obj, -1); + + if (bo->validated_shader) { ++ kfree(bo->validated_shader->uniform_addr_offsets); + kfree(bo->validated_shader->texture_samples); + kfree(bo->validated_shader); + bo->validated_shader = NULL; +@@ -591,6 +592,7 @@ void vc4_free_object(struct drm_gem_object *gem_bo) + } + + if (bo->validated_shader) { ++ kfree(bo->validated_shader->uniform_addr_offsets); + kfree(bo->validated_shader->texture_samples); + kfree(bo->validated_shader); + bo->validated_shader = NULL; +diff --git a/drivers/gpu/drm/vc4/vc4_validate_shaders.c b/drivers/gpu/drm/vc4/vc4_validate_shaders.c +index d3f15bf..7cf82b0 100644 +--- a/drivers/gpu/drm/vc4/vc4_validate_shaders.c ++++ b/drivers/gpu/drm/vc4/vc4_validate_shaders.c +@@ -942,6 +942,7 @@ vc4_validate_shader(struct drm_gem_cma_object *shader_obj) + fail: + kfree(validation_state.branch_targets); + if (validated_shader) { ++ kfree(validated_shader->uniform_addr_offsets); + kfree(validated_shader->texture_samples); + kfree(validated_shader); + } +-- +cgit v1.1 |