From: Krzysztof Kozlowski Date: Wed, 28 Jun 2017 14:56:19 +0000 (+0200) Subject: PM / Domains: Fix unsafe iteration over modified list of domain providers X-Git-Tag: v4.4.79~60 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e114c612e225521043b3b4d3eaaeb41f47bd98a5;p=thirdparty%2Fkernel%2Fstable.git PM / Domains: Fix unsafe iteration over modified list of domain providers commit b556b15dc04e9b9b98790f04c21acf5e24f994b2 upstream. of_genpd_del_provider() iterates over list of domain provides and removes matching element thus it has to use safe version of list iteration. Fixes: aa42240ab254 (PM / Domains: Add generic OF-based PM domain look-up) Signed-off-by: Krzysztof Kozlowski Acked-by: Ulf Hansson Signed-off-by: Rafael J. Wysocki Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index f25c64587f8ce..3f94e5fc110af 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -1642,10 +1642,10 @@ EXPORT_SYMBOL_GPL(__of_genpd_add_provider); */ void of_genpd_del_provider(struct device_node *np) { - struct of_genpd_provider *cp; + struct of_genpd_provider *cp, *tmp; mutex_lock(&of_genpd_mutex); - list_for_each_entry(cp, &of_genpd_providers, link) { + list_for_each_entry_safe(cp, tmp, &of_genpd_providers, link) { if (cp->node == np) { list_del(&cp->link); of_node_put(cp->node);