[PATCH v2 7/8] modesetting: Fix mmap leak in scanout_pixmap_cpu
Alex Goins
agoins at nvidia.com
Tue Jan 5 13:56:05 PST 2016
drmmode_set_scanout_pixmap_cpu() uses drmmode_map_slave_bo(), which maps a
dumb bo. However, when cleaning up scanout pixmaps, it never destroys it,
leading to a leak of mapped memory. With enough modesets, this can result
in an insane amount of memory being mapped. Add dumb_bo_destroy() of the
backing bo as part of the cleanup process.
v1: Initial commit
v2: Unchanged
Signed-off-by: Alex Goins <agoins at nvidia.com>
---
hw/xfree86/drivers/modesetting/drmmode_display.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/hw/xfree86/drivers/modesetting/drmmode_display.c b/hw/xfree86/drivers/modesetting/drmmode_display.c
index 46d9694..9ec751e 100644
--- a/hw/xfree86/drivers/modesetting/drmmode_display.c
+++ b/hw/xfree86/drivers/modesetting/drmmode_display.c
@@ -828,12 +828,14 @@ drmmode_set_scanout_pixmap_cpu(xf86CrtcPtr crtc, PixmapPtr ppix)
if (crtc->randr_crtc->scanout_pixmap) {
ppriv = msGetPixmapPriv(drmmode, crtc->randr_crtc->scanout_pixmap);
drmModeRmFB(drmmode->fd, ppriv->fb_id);
+ dumb_bo_destroy(drmmode->fd, ppriv->backing_bo);
if (crtc->randr_crtc->scanout_pixmap_back) {
drmmode_FiniSharedPixmapFlipping(crtc, drmmode);
ppriv = msGetPixmapPriv(drmmode,
crtc->randr_crtc->scanout_pixmap_back);
drmModeRmFB(drmmode->fd, ppriv->fb_id);
+ dumb_bo_destroy(drmmode->fd, ppriv->backing_bo);
}
}
if (drmmode_crtc->slave_damage) {
--
1.9.1
More information about the xorg-devel
mailing list