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

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: 19fbbbbcd3a3 ("Add TI CDCE925 I2C controlled clock synthesizer driver")
Depends-on: e665f029a283 ("clk: Convert to using %pOFn instead of device_node.name")
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Link: https://lore.kernel.org/r/20230530093913.1656095-3-claudiu.beznea@microchip.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/clk/clk-cdce925.c

index ef9a2d4..d88e1d6 100644 (file)
@@ -714,6 +714,10 @@ static int cdce925_probe(struct i2c_client *client)
        for (i = 0; i < data->chip_info->num_plls; ++i) {
                pll_clk_name[i] = kasprintf(GFP_KERNEL, "%pOFn.pll%d",
                        client->dev.of_node, i);
+               if (!pll_clk_name[i]) {
+                       err = -ENOMEM;
+                       goto error;
+               }
                init.name = pll_clk_name[i];
                data->pll[i].chip = data;
                data->pll[i].hw.init = &init;
@@ -755,6 +759,10 @@ static int cdce925_probe(struct i2c_client *client)
        init.num_parents = 1;
        init.parent_names = &parent_name; /* Mux Y1 to input */
        init.name = kasprintf(GFP_KERNEL, "%pOFn.Y1", client->dev.of_node);
+       if (!init.name) {
+               err = -ENOMEM;
+               goto error;
+       }
        data->clk[0].chip = data;
        data->clk[0].hw.init = &init;
        data->clk[0].index = 0;
@@ -773,6 +781,10 @@ static int cdce925_probe(struct i2c_client *client)
        for (i = 1; i < data->chip_info->num_outputs; ++i) {
                init.name = kasprintf(GFP_KERNEL, "%pOFn.Y%d",
                        client->dev.of_node, i+1);
+               if (!init.name) {
+                       err = -ENOMEM;
+                       goto error;
+               }
                data->clk[i].chip = data;
                data->clk[i].hw.init = &init;
                data->clk[i].index = i;