diff --git a/drivers/cam_fd/fd_hw_mgr/cam_fd_hw_mgr.c b/drivers/cam_fd/fd_hw_mgr/cam_fd_hw_mgr.c index a293770542ec..f90ffc4eb7c4 100644 --- a/drivers/cam_fd/fd_hw_mgr/cam_fd_hw_mgr.c +++ b/drivers/cam_fd/fd_hw_mgr/cam_fd_hw_mgr.c @@ -2053,6 +2053,9 @@ int cam_fd_hw_mgr_init(struct device_node *of_node, goto detach_smmu; } + g_fd_hw_mgr.work_data = kcalloc(CAM_FD_WORKQ_NUM_TASK, + sizeof(struct cam_fd_mgr_work_data), GFP_KERNEL); + for (i = 0; i < CAM_FD_WORKQ_NUM_TASK; i++) g_fd_hw_mgr.work->task.pool[i].payload = &g_fd_hw_mgr.work_data[i]; diff --git a/drivers/cam_fd/fd_hw_mgr/cam_fd_hw_mgr.h b/drivers/cam_fd/fd_hw_mgr/cam_fd_hw_mgr.h index bbbc77bef6a3..61b3ae3b40a5 100644 --- a/drivers/cam_fd/fd_hw_mgr/cam_fd_hw_mgr.h +++ b/drivers/cam_fd/fd_hw_mgr/cam_fd_hw_mgr.h @@ -180,7 +180,7 @@ struct cam_fd_hw_mgr { struct cam_fd_hw_mgr_ctx ctx_pool[CAM_CTX_MAX]; struct cam_fd_mgr_frame_request frame_req[CAM_CTX_REQ_MAX]; struct cam_req_mgr_core_workq *work; - struct cam_fd_mgr_work_data work_data[CAM_FD_WORKQ_NUM_TASK]; + struct cam_fd_mgr_work_data *work_data; struct cam_fd_query_cap_cmd fd_caps; };