diff options
Diffstat (limited to 'libdrm')
-rw-r--r-- | libdrm/intel/intel_bufmgr_gem.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/libdrm/intel/intel_bufmgr_gem.c b/libdrm/intel/intel_bufmgr_gem.c index 235ec619..cf35c816 100644 --- a/libdrm/intel/intel_bufmgr_gem.c +++ b/libdrm/intel/intel_bufmgr_gem.c @@ -304,10 +304,14 @@ drm_intel_setup_reloc_list(drm_intel_bo *bo) { drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *)bo; drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *)bo->bufmgr; + unsigned int max_relocs = bufmgr_gem->max_relocs; - bo_gem->relocs = malloc(bufmgr_gem->max_relocs * + if (bo->size / 4 < max_relocs) + max_relocs = bo->size / 4; + + bo_gem->relocs = malloc(max_relocs * sizeof(struct drm_i915_gem_relocation_entry)); - bo_gem->reloc_target_bo = malloc(bufmgr_gem->max_relocs * + bo_gem->reloc_target_bo = malloc(max_relocs * sizeof(drm_intel_bo *)); return 0; |