mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 02:22:34 +03:00
gpu: nvgpu: Fix boardobj allocation size
In current implementation we are allocating boardobj in nvgpu_boardobj_construct_super for all units and assigning that pointer to boardobj type, as the size differe for different units assigning the boardobj pointer to a common type will give violations. Fixing them by allocating mem a head and later call construct_super for elements initialization. NVGPU-4484 Change-Id: I9b5ed1a6d8418fec48a29eee38d55fc7d83fcfab Signed-off-by: rmylavarapu <rmylavarapu@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvgpu/+/2335989 Reviewed-by: automaticguardword <automaticguardword@nvidia.com> Reviewed-by: Mahantesh Kumbar <mkumbar@nvidia.com> Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: svc-mobile-misra <svc-mobile-misra@nvidia.com> Reviewed-by: svc-mobile-cert <svc-mobile-cert@nvidia.com> Reviewed-by: Vaibhav Kachore <vkachore@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com> GVS: Gerrit_Virtual_Submit
This commit is contained in:
committed by
Alex Waterman
parent
0115c26f1b
commit
8e545ef04b
@@ -127,13 +127,19 @@ static struct voltage_rail *volt_construct_volt_rail(struct gk20a *g, void *parg
|
||||
int status;
|
||||
|
||||
nvgpu_log_info(g, " ");
|
||||
status = nvgpu_boardobj_construct_super(g, &board_obj_ptr,
|
||||
sizeof(struct voltage_rail), pargs);
|
||||
|
||||
board_obj_volt_rail_ptr = nvgpu_kzalloc(g, sizeof(struct voltage_rail));
|
||||
if (board_obj_volt_rail_ptr == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
status = pmu_boardobj_construct_super(g,
|
||||
(struct boardobj *)(void *)board_obj_volt_rail_ptr, pargs);
|
||||
if (status != 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
board_obj_volt_rail_ptr = (struct voltage_rail *)board_obj_ptr;
|
||||
board_obj_ptr = (struct boardobj *)(void *)board_obj_volt_rail_ptr;
|
||||
/* override super class interface */
|
||||
board_obj_ptr->pmudatainit = volt_rail_init_pmudata_super;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user