@@ -126,6 +126,12 @@ static __init int exynos4_pm_init_power_domain(void)
struct device *dev;
pdev = of_find_device_by_node(np);
+ if (!pdev) {
+ pr_err("%s: failed to find device for node %s\n",
+ __func__, np->name);
+ of_node_put(np);
+ continue;
+ }
dev = &pdev->dev;
pd = kzalloc(sizeof(*pd), GFP_KERNEL);
@@ -136,6 +142,12 @@ static __init int exynos4_pm_init_power_domain(void)
}
pd->pd.name = kstrdup(dev_name(dev), GFP_KERNEL);
+ if (!pd->pd.name) {
+ kfree(pd);
+ of_node_put(np);
+ return -ENOMEM;
+ }
+
pd->name = pd->pd.name;
pd->base = of_iomap(np, 0);
if (!pd->base) {