aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
index 9aca653bec07..9c47e860e5e6 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
@@ -135,7 +135,8 @@ static int amdgpu_vram_mgr_new(struct ttm_mem_type_manager *man,
135 num_nodes = DIV_ROUND_UP(mem->num_pages, pages_per_node); 135 num_nodes = DIV_ROUND_UP(mem->num_pages, pages_per_node);
136 } 136 }
137 137
138 nodes = kcalloc(num_nodes, sizeof(*nodes), GFP_KERNEL); 138 nodes = kvmalloc_array(num_nodes, sizeof(*nodes),
139 GFP_KERNEL | __GFP_ZERO);
139 if (!nodes) 140 if (!nodes)
140 return -ENOMEM; 141 return -ENOMEM;
141 142
@@ -190,7 +191,7 @@ error:
190 drm_mm_remove_node(&nodes[i]); 191 drm_mm_remove_node(&nodes[i]);
191 spin_unlock(&mgr->lock); 192 spin_unlock(&mgr->lock);
192 193
193 kfree(nodes); 194 kvfree(nodes);
194 return r == -ENOSPC ? 0 : r; 195 return r == -ENOSPC ? 0 : r;
195} 196}
196 197
@@ -229,7 +230,7 @@ static void amdgpu_vram_mgr_del(struct ttm_mem_type_manager *man,
229 atomic64_sub(usage, &mgr->usage); 230 atomic64_sub(usage, &mgr->usage);
230 atomic64_sub(vis_usage, &mgr->vis_usage); 231 atomic64_sub(vis_usage, &mgr->vis_usage);
231 232
232 kfree(mem->mm_node); 233 kvfree(mem->mm_node);
233 mem->mm_node = NULL; 234 mem->mm_node = NULL;
234} 235}
235 236