Skip to content

Commit 835f128

Browse files
committed
Merge branch 'pm-devfreq'
* pm-devfreq: PM / devfreq: Fix memory leak when fail to register device PM / devfreq: Add dependency on PM_OPP PM / devfreq: Move private devfreq_update_stats() into devfreq PM / devfreq: Convert to using %pOF instead of full_name
2 parents 7b01463 + 0a9f429 commit 835f128

File tree

5 files changed

+11
-16
lines changed

5 files changed

+11
-16
lines changed

drivers/devfreq/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
menuconfig PM_DEVFREQ
22
bool "Generic Dynamic Voltage and Frequency Scaling (DVFS) support"
33
select SRCU
4+
select PM_OPP
45
help
56
A device may have a list of frequencies and voltages available.
67
devfreq, a generic DVFS framework can be registered for a device

drivers/devfreq/devfreq-event.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,8 +277,8 @@ int devfreq_event_get_edev_count(struct device *dev)
277277
sizeof(u32));
278278
if (count < 0) {
279279
dev_err(dev,
280-
"failed to get the count of devfreq-event in %s node\n",
281-
dev->of_node->full_name);
280+
"failed to get the count of devfreq-event in %pOF node\n",
281+
dev->of_node);
282282
return count;
283283
}
284284

drivers/devfreq/devfreq.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@ struct devfreq *devfreq_add_device(struct device *dev,
564564
err = device_register(&devfreq->dev);
565565
if (err) {
566566
mutex_unlock(&devfreq->lock);
567-
goto err_out;
567+
goto err_dev;
568568
}
569569

570570
devfreq->trans_table = devm_kzalloc(&devfreq->dev,
@@ -610,6 +610,9 @@ struct devfreq *devfreq_add_device(struct device *dev,
610610
mutex_unlock(&devfreq_list_lock);
611611

612612
device_unregister(&devfreq->dev);
613+
err_dev:
614+
if (devfreq)
615+
kfree(devfreq);
613616
err_out:
614617
return ERR_PTR(err);
615618
}

drivers/devfreq/governor.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,8 @@ extern int devfreq_remove_governor(struct devfreq_governor *governor);
6969

7070
extern int devfreq_update_status(struct devfreq *devfreq, unsigned long freq);
7171

72+
static inline int devfreq_update_stats(struct devfreq *df)
73+
{
74+
return df->profile->get_dev_status(df->dev.parent, &df->last_status);
75+
}
7276
#endif /* _GOVERNOR_H */

include/linux/devfreq.h

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -214,19 +214,6 @@ extern void devm_devfreq_unregister_notifier(struct device *dev,
214214
extern struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev,
215215
int index);
216216

217-
/**
218-
* devfreq_update_stats() - update the last_status pointer in struct devfreq
219-
* @df: the devfreq instance whose status needs updating
220-
*
221-
* Governors are recommended to use this function along with last_status,
222-
* which allows other entities to reuse the last_status without affecting
223-
* the values fetched later by governors.
224-
*/
225-
static inline int devfreq_update_stats(struct devfreq *df)
226-
{
227-
return df->profile->get_dev_status(df->dev.parent, &df->last_status);
228-
}
229-
230217
#if IS_ENABLED(CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND)
231218
/**
232219
* struct devfreq_simple_ondemand_data - void *data fed to struct devfreq

0 commit comments

Comments
 (0)