[Intel-gfx] [PATCH 2/9] external/drm: Validate output of realloc()
Praveen Paneri
praveen.paneri at intel.com
Thu Mar 5 21:45:07 PST 2015
realloc will return NULL if failed to allocate the extra memory
requested. Return from function if it fails.
Signed-off-by: Praveen Paneri <praveen.paneri at intel.com>
---
intel/intel_bufmgr_gem.c | 37 ++++++++++++++++++++++++++++---------
1 file changed, 28 insertions(+), 9 deletions(-)
diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
index 0c044bb..8251efd 100644
--- a/intel/intel_bufmgr_gem.c
+++ b/intel/intel_bufmgr_gem.c
@@ -432,6 +432,8 @@ drm_intel_add_validate_buffer(drm_intel_bo *bo)
drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *) bo->bufmgr;
drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo;
int index;
+ struct drm_i915_gem_exec_object *exec_objects;
+ drm_intel_bo **exec_bos;
if (bo_gem->validate_index != -1)
return;
@@ -443,12 +445,20 @@ drm_intel_add_validate_buffer(drm_intel_bo *bo)
if (new_size == 0)
new_size = 5;
- bufmgr_gem->exec_objects =
- realloc(bufmgr_gem->exec_objects,
- sizeof(*bufmgr_gem->exec_objects) * new_size);
- bufmgr_gem->exec_bos =
- realloc(bufmgr_gem->exec_bos,
+ exec_objects = realloc(bufmgr_gem->exec_objects,
+ sizeof(*bufmgr_gem->exec_objects) * new_size);
+ if (!exec_objects)
+ return;
+
+ bufmgr_gem->exec_objects = exec_objects;
+
+ exec_bos = realloc(bufmgr_gem->exec_bos,
sizeof(*bufmgr_gem->exec_bos) * new_size);
+ if (!exec_bos)
+ return;
+
+ bufmgr_gem->exec_bos = exec_bos;
+
bufmgr_gem->exec_size = new_size;
}
@@ -470,6 +480,8 @@ drm_intel_add_validate_buffer2(drm_intel_bo *bo, int need_fence)
drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *)bo->bufmgr;
drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *)bo;
int index;
+ struct drm_i915_gem_exec_object2 *exec2_objects;
+ drm_intel_bo **exec_bos;
if (bo_gem->validate_index != -1) {
if (need_fence)
@@ -485,12 +497,19 @@ drm_intel_add_validate_buffer2(drm_intel_bo *bo, int need_fence)
if (new_size == 0)
new_size = 5;
- bufmgr_gem->exec2_objects =
- realloc(bufmgr_gem->exec2_objects,
+ exec2_objects = realloc(bufmgr_gem->exec2_objects,
sizeof(*bufmgr_gem->exec2_objects) * new_size);
- bufmgr_gem->exec_bos =
- realloc(bufmgr_gem->exec_bos,
+ if (!exec2_objects)
+ return;
+
+ bufmgr_gem->exec2_objects = exec2_objects;
+
+ exec_bos = realloc(bufmgr_gem->exec_bos,
sizeof(*bufmgr_gem->exec_bos) * new_size);
+ if (!exec_bos)
+ return;
+
+ bufmgr_gem->exec_bos = exec_bos;
bufmgr_gem->exec_size = new_size;
}
--
1.9.1
More information about the Intel-gfx
mailing list