From 17d112b579e98745ec134e572da74bcc58eec314 Mon Sep 17 00:00:00 2001 From: Sanchit Kumar Date: Sun, 16 Apr 2023 14:37:41 +0530 Subject: [PATCH 1/2] Solved explicit type casting unsigned int to int --- .../resource_perms/src/mod_resource_perms.c | 36 ++++++++----------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/module/resource_perms/src/mod_resource_perms.c b/module/resource_perms/src/mod_resource_perms.c index a4dcdf409..f2427fa54 100644 --- a/module/resource_perms/src/mod_resource_perms.c +++ b/module/resource_perms/src/mod_resource_perms.c @@ -346,8 +346,8 @@ static int mod_res_resource_id_to_index( { uint32_t agent_idx; int message_count; - int message_offset; - int resource_size; + uint32_t message_offset; + uint32_t resource_size; int status; /* @@ -394,9 +394,8 @@ static int mod_res_resource_id_to_index( (message_id <= MOD_SCMI_PD_POWER_STATE_NOTIFY)) { message_count = (int)MOD_SCMI_PD_POWER_STATE_NOTIFY - (int)MOD_SCMI_PD_POWER_DOMAIN_ATTRIBUTES + 1; - message_offset = - (int)(message_id - (uint32_t)MOD_SCMI_PD_POWER_DOMAIN_ATTRIBUTES); - resource_size = (int)resources_perms_ctx.pd_count; + message_offset = (message_id - (uint32_t)MOD_SCMI_PD_POWER_DOMAIN_ATTRIBUTES); + resource_size = resources_perms_ctx.pd_count; break; } return FWK_E_PARAM; @@ -406,9 +405,8 @@ static int mod_res_resource_id_to_index( (message_id <= MOD_SCMI_PERF_DESCRIBE_FAST_CHANNEL)) { message_count = (int)MOD_SCMI_PERF_DESCRIBE_FAST_CHANNEL - (int)MOD_SCMI_PERF_DOMAIN_ATTRIBUTES + 1; - message_offset = - (int)(message_id - (uint32_t)MOD_SCMI_PERF_DOMAIN_ATTRIBUTES); - resource_size = (int)resources_perms_ctx.perf_count; + message_offset = (message_id - (uint32_t)MOD_SCMI_PERF_DOMAIN_ATTRIBUTES); + resource_size = resources_perms_ctx.perf_count; break; } return FWK_E_PARAM; @@ -418,9 +416,8 @@ static int mod_res_resource_id_to_index( (message_id <= MOD_SCMI_CLOCK_CONFIG_SET)) { message_count = (int)MOD_SCMI_CLOCK_CONFIG_SET - (int)MOD_SCMI_CLOCK_ATTRIBUTES + 1; - message_offset = - (int)(message_id - (uint32_t)MOD_SCMI_CLOCK_ATTRIBUTES); - resource_size = (int)resources_perms_ctx.clock_count; + message_offset = (message_id - (uint32_t)MOD_SCMI_CLOCK_ATTRIBUTES); + resource_size = resources_perms_ctx.clock_count; break; } return FWK_E_PARAM; @@ -430,9 +427,8 @@ static int mod_res_resource_id_to_index( (message_id <= MOD_SCMI_SENSOR_READING_GET)) { message_count = (int)MOD_SCMI_SENSOR_READING_GET - (int)MOD_SCMI_SENSOR_DESCRIPTION_GET + 1; - message_offset = - (int)(message_id - (uint32_t)MOD_SCMI_SENSOR_DESCRIPTION_GET); - resource_size = (int)resources_perms_ctx.sensor_count; + message_offset = (message_id - (uint32_t)MOD_SCMI_SENSOR_DESCRIPTION_GET); + resource_size = resources_perms_ctx.sensor_count; break; } return FWK_E_PARAM; @@ -443,9 +439,8 @@ static int mod_res_resource_id_to_index( (message_id <= MOD_SCMI_RESET_NOTIFY)) { message_count = (int)MOD_SCMI_RESET_NOTIFY - (int)MOD_SCMI_RESET_DOMAIN_ATTRIBUTES + 1; - message_offset = - (int)(message_id - (uint32_t)MOD_SCMI_RESET_DOMAIN_ATTRIBUTES); - resource_size = (int)resources_perms_ctx.reset_domain_count; + message_offset = (message_id - (uint32_t)MOD_SCMI_RESET_DOMAIN_ATTRIBUTES); + resource_size = (uint32_t)resources_perms_ctx.reset_domain_count; break; } return FWK_E_PARAM; @@ -456,9 +451,8 @@ static int mod_res_resource_id_to_index( (message_id <= MOD_SCMI_VOLTD_LEVEL_GET)) { message_count = (int)MOD_SCMI_VOLTD_LEVEL_GET - (int)MOD_SCMI_VOLTD_DOMAIN_ATTRIBUTES + 1; - message_offset = - (int)(message_id - (uint32_t)MOD_SCMI_VOLTD_DOMAIN_ATTRIBUTES); - resource_size = (int)resources_perms_ctx.voltd_count; + message_offset = (message_id - (uint32_t)MOD_SCMI_VOLTD_DOMAIN_ATTRIBUTES); + resource_size = (uint32_t)resources_perms_ctx.voltd_count; break; } return FWK_E_PARAM; @@ -474,7 +468,7 @@ static int mod_res_resource_id_to_index( } resource_size = - (int)MOD_RES_PERMS_RESOURCE_ELEMENT((unsigned int)resource_size) + 1; + (uint32_t)MOD_RES_PERMS_RESOURCE_ELEMENT(resource_size) + 1; /* * message_count: the number of messages for the agent. -- GitLab From 5e448b8ce799f5ddacf0d90aa661dec738212966 Mon Sep 17 00:00:00 2001 From: Sanchit Kumar Date: Thu, 20 Apr 2023 07:11:29 +0530 Subject: [PATCH 2/2] Fixes multiple cases of explicit type casting unsigned int(uint32_t) to int MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As unsigned integers can store larger values than the maximum value that can be stored in a signed integer, hence in explicitly type cast from an unsigned int to an int, there is a potential issue of loss of information which leads to unexpected result. Also when the most significant bit is set in unsigned int, it will be considered as a sign bit in int which eventually leads to wrong result. So a good wrap-around is to make the data type of variable “unsigned int” instead of “int”, which will not consume any extra memory compared to int and also give full range support of unsigned int values. Change-Id: Id686c7b662bc5a0d03c0a47d1fa71d89438bc642 Signed-off-by: Sanchit Kumar --- .../resource_perms/src/mod_resource_perms.c | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/module/resource_perms/src/mod_resource_perms.c b/module/resource_perms/src/mod_resource_perms.c index f2427fa54..33fa5e956 100644 --- a/module/resource_perms/src/mod_resource_perms.c +++ b/module/resource_perms/src/mod_resource_perms.c @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2020-2023, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause * @@ -238,8 +238,8 @@ static int mod_res_message_id_to_index( } if ((message_id >= MOD_SCMI_PD_POWER_DOMAIN_ATTRIBUTES) && (message_id <= MOD_SCMI_PD_POWER_STATE_NOTIFY)) { - *message_idx = (int32_t)( - message_id - (uint32_t)MOD_SCMI_PD_POWER_DOMAIN_ATTRIBUTES); + *message_idx = + (int32_t)(message_id - (uint32_t)MOD_SCMI_PD_POWER_DOMAIN_ATTRIBUTES); } return FWK_SUCCESS; @@ -260,8 +260,8 @@ static int mod_res_message_id_to_index( } if ((message_id >= MOD_SCMI_PERF_DOMAIN_ATTRIBUTES) && (message_id <= MOD_SCMI_PERF_DESCRIBE_FAST_CHANNEL)) { - *message_idx = (int32_t)( - message_id - (uint32_t)MOD_SCMI_PERF_DOMAIN_ATTRIBUTES); + *message_idx = + (int32_t)(message_id - (uint32_t)MOD_SCMI_PERF_DOMAIN_ATTRIBUTES); } return FWK_SUCCESS; @@ -282,8 +282,8 @@ static int mod_res_message_id_to_index( } if ((message_id >= MOD_SCMI_SENSOR_DESCRIPTION_GET) && (message_id <= MOD_SCMI_SENSOR_READING_GET)) { - *message_idx = (int32_t)( - message_id - (uint32_t)MOD_SCMI_SENSOR_DESCRIPTION_GET); + *message_idx = + (int32_t)(message_id - (uint32_t)MOD_SCMI_SENSOR_DESCRIPTION_GET); } return FWK_SUCCESS; @@ -293,8 +293,8 @@ static int mod_res_message_id_to_index( } if ((message_id >= MOD_SCMI_RESET_DOMAIN_ATTRIBUTES) && (message_id <= MOD_SCMI_RESET_NOTIFY)) { - *message_idx = (int32_t)( - message_id - (uint32_t)MOD_SCMI_RESET_DOMAIN_ATTRIBUTES); + *message_idx = + (int32_t)(message_id - (uint32_t)MOD_SCMI_RESET_DOMAIN_ATTRIBUTES); } return FWK_SUCCESS; @@ -304,8 +304,8 @@ static int mod_res_message_id_to_index( } if ((message_id >= MOD_SCMI_VOLTD_DOMAIN_ATTRIBUTES) && (message_id <= MOD_SCMI_VOLTD_LEVEL_GET)) { - *message_idx = (int32_t)( - message_id - (uint32_t)MOD_SCMI_VOLTD_DOMAIN_ATTRIBUTES); + *message_idx = + (int32_t)(message_id - (uint32_t)MOD_SCMI_VOLTD_DOMAIN_ATTRIBUTES); } return FWK_SUCCESS; @@ -394,7 +394,8 @@ static int mod_res_resource_id_to_index( (message_id <= MOD_SCMI_PD_POWER_STATE_NOTIFY)) { message_count = (int)MOD_SCMI_PD_POWER_STATE_NOTIFY - (int)MOD_SCMI_PD_POWER_DOMAIN_ATTRIBUTES + 1; - message_offset = (message_id - (uint32_t)MOD_SCMI_PD_POWER_DOMAIN_ATTRIBUTES); + message_offset = + (message_id - (uint32_t)MOD_SCMI_PD_POWER_DOMAIN_ATTRIBUTES); resource_size = resources_perms_ctx.pd_count; break; } @@ -405,7 +406,8 @@ static int mod_res_resource_id_to_index( (message_id <= MOD_SCMI_PERF_DESCRIBE_FAST_CHANNEL)) { message_count = (int)MOD_SCMI_PERF_DESCRIBE_FAST_CHANNEL - (int)MOD_SCMI_PERF_DOMAIN_ATTRIBUTES + 1; - message_offset = (message_id - (uint32_t)MOD_SCMI_PERF_DOMAIN_ATTRIBUTES); + message_offset = + (message_id - (uint32_t)MOD_SCMI_PERF_DOMAIN_ATTRIBUTES); resource_size = resources_perms_ctx.perf_count; break; } @@ -427,7 +429,8 @@ static int mod_res_resource_id_to_index( (message_id <= MOD_SCMI_SENSOR_READING_GET)) { message_count = (int)MOD_SCMI_SENSOR_READING_GET - (int)MOD_SCMI_SENSOR_DESCRIPTION_GET + 1; - message_offset = (message_id - (uint32_t)MOD_SCMI_SENSOR_DESCRIPTION_GET); + message_offset = + (message_id - (uint32_t)MOD_SCMI_SENSOR_DESCRIPTION_GET); resource_size = resources_perms_ctx.sensor_count; break; } @@ -439,7 +442,8 @@ static int mod_res_resource_id_to_index( (message_id <= MOD_SCMI_RESET_NOTIFY)) { message_count = (int)MOD_SCMI_RESET_NOTIFY - (int)MOD_SCMI_RESET_DOMAIN_ATTRIBUTES + 1; - message_offset = (message_id - (uint32_t)MOD_SCMI_RESET_DOMAIN_ATTRIBUTES); + message_offset = + (message_id - (uint32_t)MOD_SCMI_RESET_DOMAIN_ATTRIBUTES); resource_size = (uint32_t)resources_perms_ctx.reset_domain_count; break; } @@ -451,7 +455,8 @@ static int mod_res_resource_id_to_index( (message_id <= MOD_SCMI_VOLTD_LEVEL_GET)) { message_count = (int)MOD_SCMI_VOLTD_LEVEL_GET - (int)MOD_SCMI_VOLTD_DOMAIN_ATTRIBUTES + 1; - message_offset = (message_id - (uint32_t)MOD_SCMI_VOLTD_DOMAIN_ATTRIBUTES); + message_offset = + (message_id - (uint32_t)MOD_SCMI_VOLTD_DOMAIN_ATTRIBUTES); resource_size = (uint32_t)resources_perms_ctx.voltd_count; break; } @@ -467,8 +472,7 @@ static int mod_res_resource_id_to_index( return FWK_E_PARAM; } - resource_size = - (uint32_t)MOD_RES_PERMS_RESOURCE_ELEMENT(resource_size) + 1; + resource_size = (uint32_t)MOD_RES_PERMS_RESOURCE_ELEMENT(resource_size) + 1; /* * message_count: the number of messages for the agent. -- GitLab