Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/fb-helper: Unmap client buffer during shutdown

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

+9 -4
+9 -4
drivers/gpu/drm/drm_fb_helper.c
··· 1988 1988 if (!fb_helper->dev) 1989 1989 return; 1990 1990 1991 - if (fbi && fbi->fbdefio) { 1992 - fb_deferred_io_cleanup(fbi); 1993 - shadow = fbi->screen_buffer; 1991 + if (fbi) { 1992 + if (fbi->fbdefio) 1993 + fb_deferred_io_cleanup(fbi); 1994 + if (drm_fbdev_use_shadow_fb(fb_helper)) 1995 + shadow = fbi->screen_buffer; 1994 1996 } 1995 1997 1996 1998 drm_fb_helper_fini(fb_helper); 1997 1999 1998 - vfree(shadow); 2000 + if (shadow) 2001 + vfree(shadow); 2002 + else 2003 + drm_client_buffer_vunmap(fb_helper->buffer); 1999 2004 2000 2005 drm_client_framebuffer_delete(fb_helper->buffer); 2001 2006 }