xf86-video-ati: Branch 'master' - 2 commits
Maarten Lankhorst
mlankhorst at kemper.freedesktop.org
Wed Mar 20 09:29:31 PDT 2013
src/drmmode_display.c | 14 ++++++++++++++
src/drmmode_display.h | 1 +
src/radeon_kms.c | 2 ++
3 files changed, 17 insertions(+)
New commits:
commit a4d1bc43d4d10e2ca1e512c1010e962c587d6c16
Author: Maarten Lankhorst <maarten.lankhorst at canonical.com>
Date: Wed Mar 20 17:13:44 2013 +0100
Cleanup drmmode in CloseScreen.
Prevents a use-after-free.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst at canonical.com>
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 0d73856..d09c69c 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -1584,6 +1584,20 @@ void drmmode_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode)
}
}
+void drmmode_fini(ScrnInfoPtr pScrn, drmmode_ptr drmmode)
+{
+ RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
+ RADEONInfoPtr info = RADEONPTR(pScrn);
+
+ if (pRADEONEnt->fd_wakeup_registered == serverGeneration &&
+ info->dri2.pKernelDRMVersion->version_minor >= 4) {
+ RemoveGeneralSocket(drmmode->fd);
+ RemoveBlockAndWakeupHandlers((BlockHandlerProcPtr)NoopDDA,
+ drm_wakeup_handler, drmmode);
+ }
+}
+
+
Bool drmmode_set_bufmgr(ScrnInfoPtr pScrn, drmmode_ptr drmmode, struct radeon_bo_manager *bufmgr)
{
drmmode->bufmgr = bufmgr;
diff --git a/src/drmmode_display.h b/src/drmmode_display.h
index 45c33cb..b63ec8e 100644
--- a/src/drmmode_display.h
+++ b/src/drmmode_display.h
@@ -99,6 +99,7 @@ typedef struct {
extern Bool drmmode_pre_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int cpp);
extern void drmmode_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode);
+extern void drmmode_fini(ScrnInfoPtr pScrn, drmmode_ptr drmmode);
extern Bool drmmode_set_bufmgr(ScrnInfoPtr pScrn, drmmode_ptr drmmode, struct radeon_bo_manager *bufmgr);
extern void drmmode_set_cursor(ScrnInfoPtr scrn, drmmode_ptr drmmode, int id, struct radeon_bo *bo);
void drmmode_adjust_frame(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int x, int y);
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index e247467..f997d8a 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -1065,6 +1065,7 @@ static Bool RADEONCloseScreen_KMS(CLOSE_SCREEN_ARGS_DECL)
drmDropMaster(info->dri2.drm_fd);
+ drmmode_fini(pScrn, &info->drmmode);
if (info->dri2.enabled)
radeon_dri2_close_screen(pScreen);
drmClose(info->dri2.drm_fd);
commit 3cb3ab8704813d7c14b9e547a30e37598d70c85a
Author: Maarten Lankhorst <maarten.lankhorst at canonical.com>
Date: Wed Mar 20 17:12:29 2013 +0100
Close drm_fd in CloseScreen.
This prevents a small fd leak.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst at canonical.com>
diff --git a/src/radeon_kms.c b/src/radeon_kms.c
index cacdf8e..e247467 100644
--- a/src/radeon_kms.c
+++ b/src/radeon_kms.c
@@ -1067,6 +1067,7 @@ static Bool RADEONCloseScreen_KMS(CLOSE_SCREEN_ARGS_DECL)
if (info->dri2.enabled)
radeon_dri2_close_screen(pScreen);
+ drmClose(info->dri2.drm_fd);
pScrn->vtSema = FALSE;
xf86ClearPrimInitDone(info->pEnt->index);
More information about the xorg-commit
mailing list