diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c | 7 |
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 | ||