Mesa (master): r600/drm: fix segfaults in winsys create failure path
Dave Airlie
airlied at kemper.freedesktop.org
Thu Oct 14 22:41:22 UTC 2010
Module: Mesa
Branch: master
Commit: cbf2fb55432b8239ea9792338ee1d2fea89648ea
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cbf2fb55432b8239ea9792338ee1d2fea89648ea
Author: Keith Whitwell <keithw at vmware.com>
Date: Thu Oct 14 16:42:38 2010 +0100
r600/drm: fix segfaults in winsys create failure path
Would try to destroy radeon->cman, radeon->kman both which were still
NULL.
Signed-off-by: Dave Airlie <airlied at redhat.com>
---
src/gallium/winsys/r600/drm/r600_drm.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/gallium/winsys/r600/drm/r600_drm.c b/src/gallium/winsys/r600/drm/r600_drm.c
index 5f175a4..4916843 100644
--- a/src/gallium/winsys/r600/drm/r600_drm.c
+++ b/src/gallium/winsys/r600/drm/r600_drm.c
@@ -179,9 +179,15 @@ struct radeon *radeon_decref(struct radeon *radeon)
return NULL;
}
- radeon->cman->destroy(radeon->cman);
- radeon->kman->destroy(radeon->kman);
- drmClose(radeon->fd);
+ if (radeon->cman)
+ radeon->cman->destroy(radeon->cman);
+
+ if (radeon->kman)
+ radeon->kman->destroy(radeon->kman);
+
+ if (radeon->fd >= 0)
+ drmClose(radeon->fd);
+
free(radeon);
return NULL;
}
More information about the mesa-commit
mailing list