aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4477-drm-amd-display-fix-memory-leaks.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4477-drm-amd-display-fix-memory-leaks.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/4477-drm-amd-display-fix-memory-leaks.patch87
1 files changed, 87 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4477-drm-amd-display-fix-memory-leaks.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4477-drm-amd-display-fix-memory-leaks.patch
new file mode 100644
index 00000000..0688d226
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4477-drm-amd-display-fix-memory-leaks.patch
@@ -0,0 +1,87 @@
+From 334870b8e1f253e99e09958f356667f7d1a85264 Mon Sep 17 00:00:00 2001
+From: Anthony Koo <Anthony.Koo@amd.com>
+Date: Fri, 27 Apr 2018 20:50:07 -0400
+Subject: [PATCH 4477/5725] drm/amd/display: fix memory leaks
+
+Signed-off-by: Anthony Koo <Anthony.Koo@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Acked-by: Harry Wentland <harry.wentland@amd.com>
+---
+ drivers/gpu/drm/amd/display/modules/stats/stats.c | 24 +++++++++++++++--------
+ 1 file changed, 16 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/modules/stats/stats.c b/drivers/gpu/drm/amd/display/modules/stats/stats.c
+index fe9e4b3..3f7d47f 100644
+--- a/drivers/gpu/drm/amd/display/modules/stats/stats.c
++++ b/drivers/gpu/drm/amd/display/modules/stats/stats.c
+@@ -115,12 +115,12 @@ struct mod_stats *mod_stats_create(struct dc *dc)
+ unsigned int reg_data;
+ int i = 0;
+
++ if (dc == NULL)
++ goto fail_construct;
++
+ core_stats = kzalloc(sizeof(struct core_stats), GFP_KERNEL);
+
+ if (core_stats == NULL)
+- goto fail_alloc_context;
+-
+- if (dc == NULL)
+ goto fail_construct;
+
+ core_stats->dc = dc;
+@@ -146,6 +146,8 @@ struct mod_stats *mod_stats_create(struct dc *dc)
+ core_stats->entries,
+ GFP_KERNEL);
+
++ if (core_stats->time == NULL)
++ goto fail_construct_time;
+
+ core_stats->event_entries = DAL_STATS_EVENT_ENTRIES_DEFAULT;
+ core_stats->events = kzalloc(
+@@ -153,13 +155,13 @@ struct mod_stats *mod_stats_create(struct dc *dc)
+ core_stats->event_entries,
+ GFP_KERNEL);
+
++ if (core_stats->events == NULL)
++ goto fail_construct_events;
++
+ } else {
+ core_stats->entries = 0;
+ }
+
+- if (core_stats->time == NULL)
+- goto fail_construct;
+-
+ /* Purposely leave index 0 unused so we don't need special logic to
+ * handle calculation cases that depend on previous flip data.
+ */
+@@ -171,10 +173,13 @@ struct mod_stats *mod_stats_create(struct dc *dc)
+
+ return &core_stats->public;
+
+-fail_construct:
++fail_construct_events:
++ kfree(core_stats->time);
++
++fail_construct_time:
+ kfree(core_stats);
+
+-fail_alloc_context:
++fail_construct:
+ return NULL;
+ }
+
+@@ -186,6 +191,9 @@ void mod_stats_destroy(struct mod_stats *mod_stats)
+ if (core_stats->time != NULL)
+ kfree(core_stats->time);
+
++ if (core_stats->events != NULL)
++ kfree(core_stats->events);
++
+ kfree(core_stats);
+ }
+ }
+--
+2.7.4
+