[PATCH] ARM: EXYNOS: pd: fix resource deallocation on error path
Krzysztof Kozlowski
k.kozlowski at samsung.com
Wed Jul 29 16:37:07 PDT 2015
2015-07-30 5:15 GMT+09:00 Vladimir Zapolskiy <vz at mleia.com>:
> The change fixes a bug introduced by 2be2a3ff42a5, memory allocated
> by kstrdup_const() must be always deallocated with kfree_const(),
> otherwise there is a risk of kfree'ing ro memory.
This looks good. Can you provide also Cc-stable and fixes tags?
>
> Also remove unneeded of_node_put(), if for_each_compatible_node() body
> execution is not terminated, this prevents from double kfree() in
> OF_DYNAMIC build.
Each iteration of for_each_compatible_node() has a check:
(dn = of_find_compatible_node(dn, type, compatible))
this increases the references to 'np'. If loop continues then previous
'np' is not of_node_put().
Best regards,
Krzysztof
>
> Signed-off-by: Vladimir Zapolskiy <vz at mleia.com>
> ---
> arch/arm/mach-exynos/pm_domains.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/arch/arm/mach-exynos/pm_domains.c b/arch/arm/mach-exynos/pm_domains.c
> index 6001f1c..4a87e86 100644
> --- a/arch/arm/mach-exynos/pm_domains.c
> +++ b/arch/arm/mach-exynos/pm_domains.c
> @@ -146,9 +146,8 @@ static __init int exynos4_pm_init_power_domain(void)
> pd->base = of_iomap(np, 0);
> if (!pd->base) {
> pr_warn("%s: failed to map memory\n", __func__);
> - kfree(pd->pd.name);
> + kfree_const(pd->pd.name);
> kfree(pd);
> - of_node_put(np);
> continue;
> }
>
> --
> 2.1.4
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
More information about the linux-arm-kernel
mailing list