clk: si5341: check return value of {devm_}kasprintf()
authorClaudiu Beznea <claudiu.beznea@microchip.com>
Tue, 30 May 2023 09:39:09 +0000 (12:39 +0300)
committerStephen Boyd <sboyd@kernel.org>
Sat, 17 Jun 2023 04:52:50 +0000 (21:52 -0700)
{devm_}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: 3044a860fd09 ("clk: Add Si5341/Si5340 driver")
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Link: https://lore.kernel.org/r/20230530093913.1656095-5-claudiu.beznea@microchip.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/clk-si5341.c

index 6dca3288c8940db81c5498023c7a6940756cd8de..b2cf7edc8b30833f23a71c9ed910121bd14aabb4 100644 (file)
@@ -1697,6 +1697,10 @@ static int si5341_probe(struct i2c_client *client)
        for (i = 0; i < data->num_synth; ++i) {
                synth_clock_names[i] = devm_kasprintf(&client->dev, GFP_KERNEL,
                                "%s.N%u", client->dev.of_node->name, i);
+               if (!synth_clock_names[i]) {
+                       err = -ENOMEM;
+                       goto free_clk_names;
+               }
                init.name = synth_clock_names[i];
                data->synth[i].index = i;
                data->synth[i].data = data;
@@ -1715,6 +1719,10 @@ static int si5341_probe(struct i2c_client *client)
        for (i = 0; i < data->num_outputs; ++i) {
                init.name = kasprintf(GFP_KERNEL, "%s.%d",
                        client->dev.of_node->name, i);
+               if (!init.name) {
+                       err = -ENOMEM;
+                       goto free_clk_names;
+               }
                init.flags = config[i].synth_master ? CLK_SET_RATE_PARENT : 0;
                data->clk[i].index = i;
                data->clk[i].data = data;