clk: ti: clkctrl: check return value of kasprintf()
authorClaudiu Beznea <claudiu.beznea@microchip.com>
Tue, 30 May 2023 09:39:12 +0000 (12:39 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Jul 2023 14:21:33 +0000 (16:21 +0200)
[ Upstream commit bd46cd0b802d9c9576ca78007aa084ae3e74907b ]

kasprintf() returns a pointer to dynamically allocated memory.
Pointer could be NULL in case allocation fails. Check pointer validity.
Identified with coccinelle (kmerr.cocci script).

Fixes: 852049594b9a ("clk: ti: clkctrl: convert subclocks to use proper names also")
Fixes: 6c3090520554 ("clk: ti: clkctrl: Fix hidden dependency to node name")
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Link: https://lore.kernel.org/r/20230530093913.1656095-8-claudiu.beznea@microchip.com
Reviewed-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/clk/ti/clkctrl.c

index ae58628..57611bf 100644 (file)
@@ -258,6 +258,9 @@ static const char * __init clkctrl_get_clock_name(struct device_node *np,
        if (clkctrl_name && !legacy_naming) {
                clock_name = kasprintf(GFP_KERNEL, "%s-clkctrl:%04x:%d",
                                       clkctrl_name, offset, index);
+               if (!clock_name)
+                       return NULL;
+
                strreplace(clock_name, '_', '-');
 
                return clock_name;
@@ -586,6 +589,10 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node)
        if (clkctrl_name) {
                provider->clkdm_name = kasprintf(GFP_KERNEL,
                                                 "%s_clkdm", clkctrl_name);
+               if (!provider->clkdm_name) {
+                       kfree(provider);
+                       return;
+               }
                goto clkdm_found;
        }