drm/fb-helper: Unmap client buffer during shutdown
authorThomas Zimmermann <tzimmermann@suse.de>
Fri, 20 Nov 2020 10:25:37 +0000 (11:25 +0100)
committerThomas Zimmermann <tzimmermann@suse.de>
Tue, 24 Nov 2020 08:27:47 +0000 (09:27 +0100)
The fbdev helper's generic probe function establishes a mapping for
framebuffers without shadow buffer. The clean-up function did not unmap
the buffer object. Add the unmap operation.

As fbdev devices are usally released during system shutdown, this has
not been a problem in practice.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Acked-by: Maxime Ripard <mripard@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20201120102545.4047-3-tzimmermann@suse.de
drivers/gpu/drm/drm_fb_helper.c

index 9c673f3..aa7af46 100644 (file)
@@ -1988,14 +1988,19 @@ static void drm_fbdev_cleanup(struct drm_fb_helper *fb_helper)
        if (!fb_helper->dev)
                return;
 
-       if (fbi && fbi->fbdefio) {
-               fb_deferred_io_cleanup(fbi);
-               shadow = fbi->screen_buffer;
+       if (fbi) {
+               if (fbi->fbdefio)
+                       fb_deferred_io_cleanup(fbi);
+               if (drm_fbdev_use_shadow_fb(fb_helper))
+                       shadow = fbi->screen_buffer;
        }
 
        drm_fb_helper_fini(fb_helper);
 
-       vfree(shadow);
+       if (shadow)
+               vfree(shadow);
+       else
+               drm_client_buffer_vunmap(fb_helper->buffer);
 
        drm_client_framebuffer_delete(fb_helper->buffer);
 }