From c0e8f6e080c7ba5f021b1bed0e1b028c44da3231 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 1 Aug 2023 10:06:51 +0200 Subject: [PATCH] 4.19-stable patches added patches: drm-client-fix-memory-leak-in-drm_client_target_cloned.patch --- ...ory-leak-in-drm_client_target_cloned.patch | 69 +++++++++++++++++++ queue-4.19/series | 1 + 2 files changed, 70 insertions(+) create mode 100644 queue-4.19/drm-client-fix-memory-leak-in-drm_client_target_cloned.patch diff --git a/queue-4.19/drm-client-fix-memory-leak-in-drm_client_target_cloned.patch b/queue-4.19/drm-client-fix-memory-leak-in-drm_client_target_cloned.patch new file mode 100644 index 00000000000..48d913ddcc8 --- /dev/null +++ b/queue-4.19/drm-client-fix-memory-leak-in-drm_client_target_cloned.patch @@ -0,0 +1,69 @@ +From c2a88e8bdf5f6239948d75283d0ae7e0c7945b03 Mon Sep 17 00:00:00 2001 +From: Jocelyn Falempe +Date: Tue, 11 Jul 2023 11:20:43 +0200 +Subject: drm/client: Fix memory leak in drm_client_target_cloned + +From: Jocelyn Falempe + +commit c2a88e8bdf5f6239948d75283d0ae7e0c7945b03 upstream. + +dmt_mode is allocated and never freed in this function. +It was found with the ast driver, but most drivers using generic fbdev +setup are probably affected. + +This fixes the following kmemleak report: + backtrace: + [<00000000b391296d>] drm_mode_duplicate+0x45/0x220 [drm] + [<00000000e45bb5b3>] drm_client_target_cloned.constprop.0+0x27b/0x480 [drm] + [<00000000ed2d3a37>] drm_client_modeset_probe+0x6bd/0xf50 [drm] + [<0000000010e5cc9d>] __drm_fb_helper_initial_config_and_unlock+0xb4/0x2c0 [drm_kms_helper] + [<00000000909f82ca>] drm_fbdev_client_hotplug+0x2bc/0x4d0 [drm_kms_helper] + [<00000000063a69aa>] drm_client_register+0x169/0x240 [drm] + [<00000000a8c61525>] ast_pci_probe+0x142/0x190 [ast] + [<00000000987f19bb>] local_pci_probe+0xdc/0x180 + [<000000004fca231b>] work_for_cpu_fn+0x4e/0xa0 + [<0000000000b85301>] process_one_work+0x8b7/0x1540 + [<000000003375b17c>] worker_thread+0x70a/0xed0 + [<00000000b0d43cd9>] kthread+0x29f/0x340 + [<000000008d770833>] ret_from_fork+0x1f/0x30 +unreferenced object 0xff11000333089a00 (size 128): + +cc: +Fixes: 1d42bbc8f7f9 ("drm/fbdev: fix cloning on fbcon") +Reported-by: Zhang Yi +Signed-off-by: Jocelyn Falempe +Reviewed-by: Javier Martinez Canillas +Reviewed-by: Thomas Zimmermann +Link: https://patchwork.freedesktop.org/patch/msgid/20230711092203.68157-2-jfalempe@redhat.com +Signed-off-by: Jocelyn Falempe +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/drm_fb_helper.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/drivers/gpu/drm/drm_fb_helper.c ++++ b/drivers/gpu/drm/drm_fb_helper.c +@@ -2233,6 +2233,9 @@ static bool drm_target_cloned(struct drm + can_clone = true; + dmt_mode = drm_mode_find_dmt(fb_helper->dev, 1024, 768, 60, false); + ++ if (!dmt_mode) ++ goto fail; ++ + drm_fb_helper_for_each_connector(fb_helper, i) { + if (!enabled[i]) + continue; +@@ -2249,11 +2252,13 @@ static bool drm_target_cloned(struct drm + if (!modes[i]) + can_clone = false; + } ++ kfree(dmt_mode); + + if (can_clone) { + DRM_DEBUG_KMS("can clone using 1024x768\n"); + return true; + } ++fail: + DRM_INFO("kms: can't enable cloning when we probably wanted to.\n"); + return false; + } diff --git a/queue-4.19/series b/queue-4.19/series index 70cb75666ac..dfdbfca34ff 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -279,3 +279,4 @@ virtio-net-fix-race-between-set-queues-and-probe.patch s390-dasd-fix-hanging-device-after-quiesce-resume.patch asoc-wm8904-fill-the-cache-for-wm8904_adc_test_0-register.patch dm-cache-policy-smq-ensure-io-doesn-t-prevent-cleaner-policy-progress.patch +drm-client-fix-memory-leak-in-drm_client_target_cloned.patch -- 2.47.3