]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/pinctrl/pinctrl-falcon.c
nvmet-loop: fix possible leakage during error flow
[linux.git] / drivers / pinctrl / pinctrl-falcon.c
index ef133a82e612544a9fbbf7e376085ee5d33db3f2..a454f57c264eede94a37a7d51573fc3c717c2982 100644 (file)
@@ -96,12 +96,8 @@ static void lantiq_load_pin_desc(struct pinctrl_pin_desc *d, int bank, int len)
        int i;
 
        for (i = 0; i < len; i++) {
-               /* strlen("ioXYZ") + 1 = 6 */
-               char *name = kzalloc(6, GFP_KERNEL);
-
-               snprintf(name, 6, "io%d", base + i);
                d[i].number = base + i;
-               d[i].name = name;
+               d[i].name = kasprintf(GFP_KERNEL, "io%d", base + i);
        }
        pad_count[bank] = len;
 }
@@ -455,12 +451,15 @@ static int pinctrl_falcon_probe(struct platform_device *pdev)
                falcon_info.clk[*bank] = clk_get(&ppdev->dev, NULL);
                if (IS_ERR(falcon_info.clk[*bank])) {
                        dev_err(&ppdev->dev, "failed to get clock\n");
+                       of_node_put(np)
                        return PTR_ERR(falcon_info.clk[*bank]);
                }
                falcon_info.membase[*bank] = devm_ioremap_resource(&pdev->dev,
                                                                   &res);
-               if (IS_ERR(falcon_info.membase[*bank]))
+               if (IS_ERR(falcon_info.membase[*bank])) {
+                       of_node_put(np);
                        return PTR_ERR(falcon_info.membase[*bank]);
+               }
 
                avail = pad_r32(falcon_info.membase[*bank],
                                        LTQ_PADC_AVAIL);