|
@@ -394,7 +394,7 @@ static int devfreq_notifier_call(struct notifier_block *nb, unsigned long type,
|
|
|
* @devfreq: the devfreq struct
|
|
|
* @skip: skip calling device_unregister().
|
|
|
*/
|
|
|
-static void _remove_devfreq(struct devfreq *devfreq, bool skip)
|
|
|
+static void _remove_devfreq(struct devfreq *devfreq)
|
|
|
{
|
|
|
mutex_lock(&devfreq_list_lock);
|
|
|
if (IS_ERR(find_device_devfreq(devfreq->dev.parent))) {
|
|
@@ -412,11 +412,6 @@ static void _remove_devfreq(struct devfreq *devfreq, bool skip)
|
|
|
if (devfreq->profile->exit)
|
|
|
devfreq->profile->exit(devfreq->dev.parent);
|
|
|
|
|
|
- if (!skip && get_device(&devfreq->dev)) {
|
|
|
- device_unregister(&devfreq->dev);
|
|
|
- put_device(&devfreq->dev);
|
|
|
- }
|
|
|
-
|
|
|
mutex_destroy(&devfreq->lock);
|
|
|
kfree(devfreq);
|
|
|
}
|
|
@@ -426,14 +421,12 @@ static void _remove_devfreq(struct devfreq *devfreq, bool skip)
|
|
|
* @dev: the devfreq device
|
|
|
*
|
|
|
* This calls _remove_devfreq() if _remove_devfreq() is not called.
|
|
|
- * Note that devfreq_dev_release() could be called by _remove_devfreq() as
|
|
|
- * well as by others unregistering the device.
|
|
|
*/
|
|
|
static void devfreq_dev_release(struct device *dev)
|
|
|
{
|
|
|
struct devfreq *devfreq = to_devfreq(dev);
|
|
|
|
|
|
- _remove_devfreq(devfreq, true);
|
|
|
+ _remove_devfreq(devfreq);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -544,7 +537,8 @@ int devfreq_remove_device(struct devfreq *devfreq)
|
|
|
if (!devfreq)
|
|
|
return -EINVAL;
|
|
|
|
|
|
- _remove_devfreq(devfreq, false);
|
|
|
+ device_unregister(&devfreq->dev);
|
|
|
+ put_device(&devfreq->dev);
|
|
|
|
|
|
return 0;
|
|
|
}
|