ti: am33xx: fix do_enable_clocks() to accept NULL parameters
authorDario Binacchi <dariobin@libero.it>
Tue, 29 Dec 2020 23:06:38 +0000 (00:06 +0100)
committerLokesh Vutla <lokeshvutla@ti.com>
Tue, 12 Jan 2021 05:28:04 +0000 (10:58 +0530)
Up till this commit passing NULL as input parameter was allowed, but not
handled properly. When a NULL parameter was passed to the function a data
abort was raised.

Signed-off-by: Dario Binacchi <dariobin@libero.it>
Reviewed-by: Simon Glass <sjg@chromium.org>
arch/arm/mach-omap2/am33xx/clock.c

index 8819062aaadd8830366348e375fa77a895076c3e..130ee6c6e3e8347339bf9d27c56f7cd6a233591c 100644 (file)
@@ -194,13 +194,14 @@ void do_enable_clocks(u32 *const *clk_domains,
        u32 i, max = 100;
 
        /* Put the clock domains in SW_WKUP mode */
-       for (i = 0; (i < max) && clk_domains[i]; i++) {
+       for (i = 0; (i < max) && clk_domains && clk_domains[i]; i++) {
                enable_clock_domain(clk_domains[i],
                                    CD_CLKCTRL_CLKTRCTRL_SW_WKUP);
        }
 
        /* Clock modules that need to be put in SW_EXPLICIT_EN mode */
-       for (i = 0; (i < max) && clk_modules_explicit_en[i]; i++) {
+       for (i = 0; (i < max) && clk_modules_explicit_en &&
+            clk_modules_explicit_en[i]; i++) {
                enable_clock_module(clk_modules_explicit_en[i],
                                    MODULE_CLKCTRL_MODULEMODE_SW_EXPLICIT_EN,
                                    wait_for_enable);
@@ -215,12 +216,13 @@ void do_disable_clocks(u32 *const *clk_domains,
 
 
        /* Clock modules that need to be put in SW_DISABLE */
-       for (i = 0; (i < max) && clk_modules_disable[i]; i++)
+       for (i = 0; (i < max) && clk_modules_disable && clk_modules_disable[i];
+            i++)
                disable_clock_module(clk_modules_disable[i],
                                     wait_for_disable);
 
        /* Put the clock domains in SW_SLEEP mode */
-       for (i = 0; (i < max) && clk_domains[i]; i++)
+       for (i = 0; (i < max) && clk_domains && clk_domains[i]; i++)
                disable_clock_domain(clk_domains[i]);
 }