diff --git a/amdgpu/amdgpu_asic_id.c b/amdgpu/amdgpu_asic_id.c index 3a88896b..e8218974 100644 --- a/amdgpu/amdgpu_asic_id.c +++ b/amdgpu/amdgpu_asic_id.c @@ -186,19 +186,20 @@ int amdgpu_parse_asic_ids(struct amdgpu_asic_id **p_asic_id_table) table_size++; } - /* end of table */ - id = asic_id_table + table_size; - memset(id, 0, sizeof(struct amdgpu_asic_id)); - if (table_size != table_max_size) { id = realloc(asic_id_table, (table_size + 1) * sizeof(struct amdgpu_asic_id)); - if (!id) + if (!id) { r = -ENOMEM; - else - asic_id_table = id; + goto free; + } + asic_id_table = id; } + /* end of table */ + id = asic_id_table + table_size; + memset(id, 0, sizeof(struct amdgpu_asic_id)); + free: free(line);