summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYonit Halperin <yhalperi@redhat.com>2010-07-12 10:20:12 +0300
committerYonit Halperin <yhalperi@redhat.com>2010-07-12 10:20:12 +0300
commitf55b4857ed8a828f75c2034e6d1bbec60d56abc1 (patch)
treea1c3c05104d767dac81f44e0c786f01881a2c03f
parent43512da5e50b3ae434f5df89ed91d53fd12867cb (diff)
Fix memory leak: deleting primary surface device bitmap when it is disabled.
The bug caused BSOD: SESSION_HAS_VALID_POOL_ON_EXIT on switching users/log off (after the driver is disabled and enabled back again, while the miniport is not restarted).
-rw-r--r--display/driver.c10
-rw-r--r--display/qxldd.h3
2 files changed, 1 insertions, 12 deletions
diff --git a/display/driver.c b/display/driver.c
index 39d0aa9..7dce00e 100644
--- a/display/driver.c
+++ b/display/driver.c
@@ -929,23 +929,15 @@ VOID DrvDisableSurface(DHPDEV in_pdev)
DEBUG_PRINT((NULL, 1, "%s: 0x%lx\n", __FUNCTION__, pdev));
DisableQXLPrimarySurface(pdev);
- //DisableQXLAllSurfaces(pdev);
UnmapFB(pdev);
if (pdev->surf) {
DeleteDeviceBitmap(pdev, 0, DEVICE_BITMAP_ALLOCATION_TYPE_SURF0);
+ EngDeleteSurface(pdev->surf);
pdev->surf = NULL;
}
- if (pdev->draw_surf) {
- drawarea.bitmap = pdev->draw_bitmap;
- drawarea.surf_obj = pdev->draw_surf;
- FreeDrawArea(&drawarea);
- pdev->draw_surf = NULL;
- pdev->draw_bitmap = NULL;
- }
-
if (pdev->surfaces_info) {
EngFreeMem(pdev->surfaces_info);
pdev->surfaces_info = NULL;
diff --git a/display/qxldd.h b/display/qxldd.h
index 86438fe..ffa8b8c 100644
--- a/display/qxldd.h
+++ b/display/qxldd.h
@@ -242,9 +242,6 @@ typedef struct PDev {
PEVENT cursor_event;
PEVENT sleep_event;
- HSURF draw_bitmap;
- SURFOBJ *draw_surf;
-
UINT32 log_port;
UINT8 *log_buf;
UINT32 *log_level;