diff options
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.patch | 87 |
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 + |