gpu: nvgpu: fix the memory corruption issue

Memory for tpc_index in gpc_tpc_physical_id_map array is allocated only
for number of tpcs while it should be number of tpcs*size of index.

Change fixes the memory allocation to avoid memory corruption.

Bug 3994374

Change-Id: Ibc593b1d0baba980787ae50f02ea20072525888c
Signed-off-by: prsethi <prsethi@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2906890
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
Reviewed-by: svc-mobile-cert <svc-mobile-cert@nvidia.com>
Reviewed-by: Dinesh T <dt@nvidia.com>
Reviewed-by: Kishan Palankar <kpalankar@nvidia.com>
Reviewed-by: Vaibhav Kachore <vkachore@nvidia.com>
GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
prsethi
2023-05-18 17:30:52 +00:00
committed by mobile promotions
parent 54b01e881b
commit 6f4b7d5cc2

View File

@@ -666,7 +666,7 @@ struct nvgpu_gr_config *nvgpu_gr_config_init(struct gk20a *g)
* logical id.
*/
config->gpc_tpc_physical_id_map = nvgpu_kzalloc(g,
nvgpu_safe_mult_u64((size_t)config->gpc_count,
nvgpu_safe_mult_u32((size_t)config->gpc_count,
sizeof(u32 *)));
if (config->gpc_tpc_physical_id_map == NULL) {
nvgpu_err(g, "alloc gpc_tpc_physical_id_map failed");
@@ -677,7 +677,8 @@ struct nvgpu_gr_config *nvgpu_gr_config_init(struct gk20a *g)
gpc_phys_id = nvgpu_grmgr_get_gr_gpc_phys_id(g,
cur_gr_instance, (u32)gpc_index);
config->gpc_tpc_physical_id_map[gpc_phys_id] =
nvgpu_kzalloc(g, config->max_tpc_per_gpc_count);
nvgpu_kzalloc(g, nvgpu_safe_mult_u32(
config->max_tpc_per_gpc_count, sizeof(u32)));
if (config->gpc_tpc_physical_id_map[gpc_phys_id] == NULL) {
nvgpu_err(g, "alloc tpc_physical_id_map(%u) failed",
gpc_phys_id);