From 6f4b7d5cc23128814ba9182f88c2c9b208bb0a08 Mon Sep 17 00:00:00 2001 From: prsethi Date: Thu, 18 May 2023 17:30:52 +0000 Subject: [PATCH] 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 Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2906890 Reviewed-by: svcacv Reviewed-by: svc-mobile-coverity Reviewed-by: svc-mobile-cert Reviewed-by: Dinesh T Reviewed-by: Kishan Palankar Reviewed-by: Vaibhav Kachore GVS: Gerrit_Virtual_Submit --- drivers/gpu/nvgpu/common/gr/gr_config.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/nvgpu/common/gr/gr_config.c b/drivers/gpu/nvgpu/common/gr/gr_config.c index 1c261bff3..dbd536576 100644 --- a/drivers/gpu/nvgpu/common/gr/gr_config.c +++ b/drivers/gpu/nvgpu/common/gr/gr_config.c @@ -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);