aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/0950-amdgpu-Only-destroy-fbdev-framebuffer-if-it-was-init.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/0950-amdgpu-Only-destroy-fbdev-framebuffer-if-it-was-init.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/0950-amdgpu-Only-destroy-fbdev-framebuffer-if-it-was-init.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/0950-amdgpu-Only-destroy-fbdev-framebuffer-if-it-was-init.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/0950-amdgpu-Only-destroy-fbdev-framebuffer-if-it-was-init.patch
new file mode 100644
index 00000000..20007dcc
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/0950-amdgpu-Only-destroy-fbdev-framebuffer-if-it-was-init.patch
@@ -0,0 +1,40 @@
+From 91dca6dc0af933bf4fff609e407e9cee69c61e1f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com>
+Date: Mon, 11 Sep 2017 17:04:41 +0900
+Subject: [PATCH 0950/4131] amdgpu: Only destroy fbdev framebuffer if it was
+ initialized
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fixes crash when trying to unload the amdgpu module before the fbdev
+framebuffer was initialized, which can happen since the DRM fbdev helper
+code supports deferred setup.
+
+Acked-by: Christian König <christian.koenig@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
+index 4f3bf7d..90fa8e8 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
+@@ -298,10 +298,10 @@ static int amdgpu_fbdev_destroy(struct drm_device *dev, struct amdgpu_fbdev *rfb
+ if (rfb->obj) {
+ amdgpufb_destroy_pinned_object(rfb->obj);
+ rfb->obj = NULL;
++ drm_framebuffer_unregister_private(&rfb->base);
++ drm_framebuffer_cleanup(&rfb->base);
+ }
+ drm_fb_helper_fini(&rfbdev->helper);
+- drm_framebuffer_unregister_private(&rfb->base);
+- drm_framebuffer_cleanup(&rfb->base);
+
+ return 0;
+ }
+--
+2.7.4
+