Skip to content

Commit

Permalink
ARM: EXYNOS: Handle of_find_device_by_node() and kstrdup() failures
Browse files Browse the repository at this point in the history
Prevent possible NULL pointer dereference of pointer returned by
of_find_device_by_node(). Handle this by skipping such power domain.

Additionally fail the init on kstrdup() failure. Such case is actually
not fatal because the name for power domain allocated by kstrdup() is
used only in printk. Still as a precaution handle this as an error
condition.

Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Signed-off-by: Kukjin Kim <kgene@kernel.org>
  • Loading branch information
Krzysztof Kozlowski authored and Kukjin Kim committed Jun 5, 2015
1 parent ef2156c commit c88cad3
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions arch/arm/mach-exynos/pm_domains.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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) {
Expand Down

0 comments on commit c88cad3

Please sign in to comment.