Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit beda5fc1 authored by Jon Hunter's avatar Jon Hunter Committed by Rafael J. Wysocki
Browse files

PM / Domains: Fix removal of a subdomain



Commit 30e7a65b (PM / Domains: Ensure subdomain is not in use
before removing) added a test to ensure that a subdomain is not a
master to another subdomain or if any devices are using the subdomain
before removing. This change incorrectly used the "slave_links" list to
determine if the subdomain is a master to another subdomain, where it
should have been using the "master_links" list instead. The
"slave_links" list will never be empty for a subdomain and so a
subdomain can never be removed. Fix this by testing if the
"master_links" list is empty instead.

Fixes: 30e7a65b (PM / Domains: Ensure subdomain is not in use before removing)
Signed-off-by: default avatarJon Hunter <jonathanh@nvidia.com>
Reviewed-by: default avatarThierry Reding <treding@nvidia.com>
Acked-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
Acked-by: default avatarKevin Hilman <khilman@baylibre.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 076395ca
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -1398,7 +1398,7 @@ int pm_genpd_remove_subdomain(struct generic_pm_domain *genpd,
	mutex_lock(&subdomain->lock);
	mutex_lock(&subdomain->lock);
	mutex_lock_nested(&genpd->lock, SINGLE_DEPTH_NESTING);
	mutex_lock_nested(&genpd->lock, SINGLE_DEPTH_NESTING);


	if (!list_empty(&subdomain->slave_links) || subdomain->device_count) {
	if (!list_empty(&subdomain->master_links) || subdomain->device_count) {
		pr_warn("%s: unable to remove subdomain %s\n", genpd->name,
		pr_warn("%s: unable to remove subdomain %s\n", genpd->name,
			subdomain->name);
			subdomain->name);
		ret = -EBUSY;
		ret = -EBUSY;