]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
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>
Thu, 27 Jul 2023 06:37:15 +0000 (08:37 +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 308b353815e170ad22d2fc1a2416c05e06458084..470d91d7314db01f95f34d02cbf3f215320a8a03 100644 (file)
@@ -705,6 +705,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;
@@ -746,6 +750,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;
@@ -764,6 +772,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;