clk: cdce925: check return value of kasprintf()
authorClaudiu Beznea <claudiu.beznea@microchip.com>
Tue, 30 May 2023 09:39:07 +0000 (12:39 +0300)
committerStephen Boyd <sboyd@kernel.org>
Sat, 17 Jun 2023 04:52:49 +0000 (21:52 -0700)
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>
drivers/clk/clk-cdce925.c

index 6350682f7e6d23d7035c6cc1a83f30d413678ebc..87890669297d8c331e70962f4719ab32d1a23827 100644 (file)
@@ -701,6 +701,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;
@@ -742,6 +746,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;
@@ -760,6 +768,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;