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

Commit 3654c5cc authored by Viresh Kumar's avatar Viresh Kumar Committed by Rafael J. Wysocki
Browse files

cpufreq: Call cpufreq_policy_put_kobj() from cpufreq_policy_free()



cpufreq_policy_put_kobj() is actually part of freeing the policy and can
be called from cpufreq_policy_free() directly instead of a separate
call.

Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 2fc3384d
Loading
Loading
Loading
Loading
+6 −11
Original line number Diff line number Diff line
@@ -1206,7 +1206,7 @@ static void cpufreq_policy_put_kobj(struct cpufreq_policy *policy, bool notify)
	pr_debug("wait complete\n");
}

static void cpufreq_policy_free(struct cpufreq_policy *policy)
static void cpufreq_policy_free(struct cpufreq_policy *policy, bool notify)
{
	unsigned long flags;
	int cpu;
@@ -1219,6 +1219,7 @@ static void cpufreq_policy_free(struct cpufreq_policy *policy)
		per_cpu(cpufreq_cpu_data, cpu) = NULL;
	write_unlock_irqrestore(&cpufreq_driver_lock, flags);

	cpufreq_policy_put_kobj(policy, notify);
	free_cpumask_var(policy->related_cpus);
	free_cpumask_var(policy->cpus);
	kfree(policy);
@@ -1417,9 +1418,7 @@ static int cpufreq_add_dev(struct device *dev, struct subsys_interface *sif)
	if (cpufreq_driver->exit)
		cpufreq_driver->exit(policy);
err_set_policy_cpu:
	cpufreq_policy_put_kobj(policy, recover_policy);
	cpufreq_policy_free(policy);

	cpufreq_policy_free(policy, recover_policy);
nomem_out:
	up_read(&cpufreq_rwsem);

@@ -1511,10 +1510,6 @@ static int __cpufreq_remove_dev_finish(struct device *dev,
		}
	}

	/* Free the policy kobjects only if the driver is getting removed. */
	if (sif)
		cpufreq_policy_put_kobj(policy, true);

	/*
	 * Perform the ->exit() even during light-weight tear-down,
	 * since this is a core component, and is essential for the
@@ -1523,8 +1518,9 @@ static int __cpufreq_remove_dev_finish(struct device *dev,
	if (cpufreq_driver->exit)
		cpufreq_driver->exit(policy);

	/* Free the policy only if the driver is getting removed. */
	if (sif)
		cpufreq_policy_free(policy);
		cpufreq_policy_free(policy, true);

	return 0;
}
@@ -1563,8 +1559,7 @@ static int cpufreq_remove_dev(struct device *dev, struct subsys_interface *sif)
			return 0;
		}

		cpufreq_policy_put_kobj(policy, true);
		cpufreq_policy_free(policy);
		cpufreq_policy_free(policy, true);
		return 0;
	}