fix(nxp-clk): function parameter should not be modified
The function 'update_stack_depth' modifies the value of the 'depth'
parameter passed by reference. Typically, the caller recevies this
parameter by value, and it is then passed to 'update_stack_depth' by
reference. This violates MISRA 17.8 rule. To address this issue, a new
local variable is introduced to store the value of 'depth'.
Change-Id: Ia37f4ede9e6558f778bdda17b7b195f1f50d0c30
Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com>
diff --git a/drivers/nxp/clk/s32cc/s32cc_clk_drv.c b/drivers/nxp/clk/s32cc/s32cc_clk_drv.c
index 2ff227d..9b57607 100644
--- a/drivers/nxp/clk/s32cc/s32cc_clk_drv.c
+++ b/drivers/nxp/clk/s32cc/s32cc_clk_drv.c
@@ -155,9 +155,10 @@
unsigned int depth)
{
const struct s32cc_osc *osc = s32cc_obj2osc(module);
+ unsigned int ldepth = depth;
int ret = 0;
- ret = update_stack_depth(&depth);
+ ret = update_stack_depth(&ldepth);
if (ret != 0) {
return ret;
}
@@ -336,11 +337,12 @@
const struct s32cc_pll *pll = s32cc_obj2pll(module);
const struct s32cc_clkmux *mux;
uintptr_t pll_addr = UL(0x0);
+ unsigned int ldepth = depth;
unsigned long sclk_freq;
uint32_t sclk_id;
int ret;
- ret = update_stack_depth(&depth);
+ ret = update_stack_depth(&ldepth);
if (ret != 0) {
return ret;
}
@@ -436,11 +438,12 @@
{
const struct s32cc_pll_out_div *pdiv = s32cc_obj2plldiv(module);
uintptr_t pll_addr = 0x0ULL;
+ unsigned int ldepth = depth;
const struct s32cc_pll *pll;
uint32_t dc;
int ret;
- ret = update_stack_depth(&depth);
+ ret = update_stack_depth(&ldepth);
if (ret != 0) {
return ret;
}
@@ -577,10 +580,11 @@
unsigned int depth)
{
const struct s32cc_clkmux *mux = s32cc_obj2clkmux(module);
+ unsigned int ldepth = depth;
const struct s32cc_clk *clk;
int ret = 0;
- ret = update_stack_depth(&depth);
+ ret = update_stack_depth(&ldepth);
if (ret != 0) {
return ret;
}
@@ -635,9 +639,10 @@
const struct s32cc_clk_drv *drv,
unsigned int depth)
{
+ unsigned int ldepth = depth;
int ret = 0;
- ret = update_stack_depth(&depth);
+ ret = update_stack_depth(&ldepth);
if (ret != 0) {
return ret;
}
@@ -801,13 +806,14 @@
unsigned int depth)
{
const struct s32cc_dfs_div *dfs_div = s32cc_obj2dfsdiv(module);
+ unsigned int ldepth = depth;
const struct s32cc_pll *pll;
const struct s32cc_dfs *dfs;
uintptr_t dfs_addr = 0UL;
uint32_t mfi, mfn;
int ret = 0;
- ret = update_stack_depth(&depth);
+ ret = update_stack_depth(&ldepth);
if (ret != 0) {
return ret;
}
@@ -931,24 +937,25 @@
const struct s32cc_clk_drv *drv, bool leaf_node,
unsigned int depth)
{
+ unsigned int ldepth = depth;
int ret = 0;
if (mod == NULL) {
return 0;
}
- ret = update_stack_depth(&depth);
+ ret = update_stack_depth(&ldepth);
if (ret != 0) {
return ret;
}
/* Refcount will be updated as part of the recursivity */
if (leaf_node) {
- return en_cb(mod, drv, depth);
+ return en_cb(mod, drv, ldepth);
}
if (mod->refcount == 0U) {
- ret = en_cb(mod, drv, depth);
+ ret = en_cb(mod, drv, ldepth);
}
if (ret == 0) {
@@ -978,10 +985,11 @@
[s32cc_part_block_t] = enable_part_block,
[s32cc_part_block_link_t] = enable_part_block_link,
};
+ unsigned int ldepth = depth;
uint32_t index;
int ret = 0;
- ret = update_stack_depth(&depth);
+ ret = update_stack_depth(&ldepth);
if (ret != 0) {
return ret;
}
@@ -1006,13 +1014,13 @@
parent = get_module_parent(module);
ret = exec_cb_with_refcount(enable_module, parent, drv,
- false, depth);
+ false, ldepth);
if (ret != 0) {
return ret;
}
ret = exec_cb_with_refcount(enable_clbs[index], module, drv,
- true, depth);
+ true, ldepth);
if (ret != 0) {
return ret;
}