Loading drivers/cam_sensor_module/cam_sensor_utils/cam_sensor_util.c +18 −7 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved. * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved. */ #include <linux/kernel.h> Loading Loading @@ -1155,22 +1155,29 @@ int32_t cam_sensor_update_power_settings(void *cmd_buf, int32_t i = 0, pwr_up = 0, pwr_down = 0; struct cam_sensor_power_setting *pwr_settings; void *ptr = cmd_buf, *scr; struct cam_cmd_power *pwr_cmd = (struct cam_cmd_power *)cmd_buf; struct common_header *cmm_hdr = (struct common_header *)cmd_buf; struct cam_cmd_power *pwr_cmd = kzalloc(sizeof(struct cam_cmd_power), GFP_KERNEL); if (!pwr_cmd) return -ENOMEM; memcpy(pwr_cmd, cmd_buf, sizeof(struct cam_cmd_power)); if (!pwr_cmd || !cmd_length || cmd_buf_len < (size_t)cmd_length || cam_sensor_validate(cmd_buf, cmd_buf_len)) { CAM_ERR(CAM_SENSOR, "Invalid Args: pwr_cmd %pK, cmd_length: %d", pwr_cmd, cmd_length); return -EINVAL; rc = -EINVAL; goto free_power_command; } power_info->power_setting_size = 0; power_info->power_setting = kzalloc(sizeof(struct cam_sensor_power_setting) * MAX_POWER_CONFIG, GFP_KERNEL); if (!power_info->power_setting) return -ENOMEM; if (!power_info->power_setting) { rc = -ENOMEM; goto free_power_command; } power_info->power_down_setting_size = 0; power_info->power_down_setting = Loading @@ -1180,7 +1187,8 @@ int32_t cam_sensor_update_power_settings(void *cmd_buf, kfree(power_info->power_setting); power_info->power_setting = NULL; power_info->power_setting_size = 0; return -ENOMEM; rc = -ENOMEM; goto free_power_command; } while (tot_size < cmd_length) { Loading Loading @@ -1364,7 +1372,7 @@ int32_t cam_sensor_update_power_settings(void *cmd_buf, } } return rc; goto free_power_command; free_power_settings: kfree(power_info->power_down_setting); kfree(power_info->power_setting); Loading @@ -1372,6 +1380,9 @@ int32_t cam_sensor_update_power_settings(void *cmd_buf, power_info->power_setting = NULL; power_info->power_down_setting_size = 0; power_info->power_setting_size = 0; free_power_command: kfree(pwr_cmd); pwr_cmd = NULL; return rc; } Loading Loading
drivers/cam_sensor_module/cam_sensor_utils/cam_sensor_util.c +18 −7 Original line number Diff line number Diff line // SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved. * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved. */ #include <linux/kernel.h> Loading Loading @@ -1155,22 +1155,29 @@ int32_t cam_sensor_update_power_settings(void *cmd_buf, int32_t i = 0, pwr_up = 0, pwr_down = 0; struct cam_sensor_power_setting *pwr_settings; void *ptr = cmd_buf, *scr; struct cam_cmd_power *pwr_cmd = (struct cam_cmd_power *)cmd_buf; struct common_header *cmm_hdr = (struct common_header *)cmd_buf; struct cam_cmd_power *pwr_cmd = kzalloc(sizeof(struct cam_cmd_power), GFP_KERNEL); if (!pwr_cmd) return -ENOMEM; memcpy(pwr_cmd, cmd_buf, sizeof(struct cam_cmd_power)); if (!pwr_cmd || !cmd_length || cmd_buf_len < (size_t)cmd_length || cam_sensor_validate(cmd_buf, cmd_buf_len)) { CAM_ERR(CAM_SENSOR, "Invalid Args: pwr_cmd %pK, cmd_length: %d", pwr_cmd, cmd_length); return -EINVAL; rc = -EINVAL; goto free_power_command; } power_info->power_setting_size = 0; power_info->power_setting = kzalloc(sizeof(struct cam_sensor_power_setting) * MAX_POWER_CONFIG, GFP_KERNEL); if (!power_info->power_setting) return -ENOMEM; if (!power_info->power_setting) { rc = -ENOMEM; goto free_power_command; } power_info->power_down_setting_size = 0; power_info->power_down_setting = Loading @@ -1180,7 +1187,8 @@ int32_t cam_sensor_update_power_settings(void *cmd_buf, kfree(power_info->power_setting); power_info->power_setting = NULL; power_info->power_setting_size = 0; return -ENOMEM; rc = -ENOMEM; goto free_power_command; } while (tot_size < cmd_length) { Loading Loading @@ -1364,7 +1372,7 @@ int32_t cam_sensor_update_power_settings(void *cmd_buf, } } return rc; goto free_power_command; free_power_settings: kfree(power_info->power_down_setting); kfree(power_info->power_setting); Loading @@ -1372,6 +1380,9 @@ int32_t cam_sensor_update_power_settings(void *cmd_buf, power_info->power_setting = NULL; power_info->power_down_setting_size = 0; power_info->power_setting_size = 0; free_power_command: kfree(pwr_cmd); pwr_cmd = NULL; return rc; } Loading