diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2016-06-23 08:48:41 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2016-06-23 08:48:41 -0400 |
commit | 492a19ef8bbfe03b03ca82635555ea1e2803ff91 (patch) | |
tree | 3f427f2a961e91c8ada3b93a97af1b380415fa7f | |
parent | 33688abb2802ff3a230bd2441f765477b94cc89e (diff) | |
parent | 8d39fc085d268a56486066a3deca94745f804f2d (diff) |
Merge branch 'fixes' of https://git.kernel.org/pub/scm/linux/kernel/git/mzx/devfreq into pm-devfreq
Pull devfreq fixes for v4.7 from MyungJoo Ham.
* 'fixes' of https://git.kernel.org/pub/scm/linux/kernel/git/mzx/devfreq:
PM / devfreq: fix initialization of current frequency in last status
PM / devfreq: exynos-nocp: Remove incorrect IS_ERR() check
PM / devfreq: remove double put_device
PM / devfreq: fix double call put_device
PM / devfreq: fix duplicated kfree on devfreq pointer
PM / devfreq: devm_kzalloc to have dev pointer more precisely
-rw-r--r-- | drivers/devfreq/devfreq.c | 22 | ||||
-rw-r--r-- | drivers/devfreq/event/exynos-nocp.c | 3 |
2 files changed, 10 insertions, 15 deletions
diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c index 1d6c803804d5..c7f47e34807b 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c | |||
@@ -552,6 +552,7 @@ struct devfreq *devfreq_add_device(struct device *dev, | |||
552 | devfreq->profile = profile; | 552 | devfreq->profile = profile; |
553 | strncpy(devfreq->governor_name, governor_name, DEVFREQ_NAME_LEN); | 553 | strncpy(devfreq->governor_name, governor_name, DEVFREQ_NAME_LEN); |
554 | devfreq->previous_freq = profile->initial_freq; | 554 | devfreq->previous_freq = profile->initial_freq; |
555 | devfreq->last_status.current_frequency = profile->initial_freq; | ||
555 | devfreq->data = data; | 556 | devfreq->data = data; |
556 | devfreq->nb.notifier_call = devfreq_notifier_call; | 557 | devfreq->nb.notifier_call = devfreq_notifier_call; |
557 | 558 | ||
@@ -561,23 +562,22 @@ struct devfreq *devfreq_add_device(struct device *dev, | |||
561 | mutex_lock(&devfreq->lock); | 562 | mutex_lock(&devfreq->lock); |
562 | } | 563 | } |
563 | 564 | ||
564 | devfreq->trans_table = devm_kzalloc(dev, sizeof(unsigned int) * | ||
565 | devfreq->profile->max_state * | ||
566 | devfreq->profile->max_state, | ||
567 | GFP_KERNEL); | ||
568 | devfreq->time_in_state = devm_kzalloc(dev, sizeof(unsigned long) * | ||
569 | devfreq->profile->max_state, | ||
570 | GFP_KERNEL); | ||
571 | devfreq->last_stat_updated = jiffies; | ||
572 | |||
573 | dev_set_name(&devfreq->dev, "%s", dev_name(dev)); | 565 | dev_set_name(&devfreq->dev, "%s", dev_name(dev)); |
574 | err = device_register(&devfreq->dev); | 566 | err = device_register(&devfreq->dev); |
575 | if (err) { | 567 | if (err) { |
576 | put_device(&devfreq->dev); | ||
577 | mutex_unlock(&devfreq->lock); | 568 | mutex_unlock(&devfreq->lock); |
578 | goto err_out; | 569 | goto err_out; |
579 | } | 570 | } |
580 | 571 | ||
572 | devfreq->trans_table = devm_kzalloc(&devfreq->dev, sizeof(unsigned int) * | ||
573 | devfreq->profile->max_state * | ||
574 | devfreq->profile->max_state, | ||
575 | GFP_KERNEL); | ||
576 | devfreq->time_in_state = devm_kzalloc(&devfreq->dev, sizeof(unsigned long) * | ||
577 | devfreq->profile->max_state, | ||
578 | GFP_KERNEL); | ||
579 | devfreq->last_stat_updated = jiffies; | ||
580 | |||
581 | srcu_init_notifier_head(&devfreq->transition_notifier_list); | 581 | srcu_init_notifier_head(&devfreq->transition_notifier_list); |
582 | 582 | ||
583 | mutex_unlock(&devfreq->lock); | 583 | mutex_unlock(&devfreq->lock); |
@@ -603,7 +603,6 @@ struct devfreq *devfreq_add_device(struct device *dev, | |||
603 | err_init: | 603 | err_init: |
604 | list_del(&devfreq->node); | 604 | list_del(&devfreq->node); |
605 | device_unregister(&devfreq->dev); | 605 | device_unregister(&devfreq->dev); |
606 | kfree(devfreq); | ||
607 | err_out: | 606 | err_out: |
608 | return ERR_PTR(err); | 607 | return ERR_PTR(err); |
609 | } | 608 | } |
@@ -621,7 +620,6 @@ int devfreq_remove_device(struct devfreq *devfreq) | |||
621 | return -EINVAL; | 620 | return -EINVAL; |
622 | 621 | ||
623 | device_unregister(&devfreq->dev); | 622 | device_unregister(&devfreq->dev); |
624 | put_device(&devfreq->dev); | ||
625 | 623 | ||
626 | return 0; | 624 | return 0; |
627 | } | 625 | } |
diff --git a/drivers/devfreq/event/exynos-nocp.c b/drivers/devfreq/event/exynos-nocp.c index 6b6a5f310486..a5841403bde8 100644 --- a/drivers/devfreq/event/exynos-nocp.c +++ b/drivers/devfreq/event/exynos-nocp.c | |||
@@ -220,9 +220,6 @@ static int exynos_nocp_parse_dt(struct platform_device *pdev, | |||
220 | 220 | ||
221 | /* Maps the memory mapped IO to control nocp register */ | 221 | /* Maps the memory mapped IO to control nocp register */ |
222 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 222 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
223 | if (IS_ERR(res)) | ||
224 | return PTR_ERR(res); | ||
225 | |||
226 | base = devm_ioremap_resource(dev, res); | 223 | base = devm_ioremap_resource(dev, res); |
227 | if (IS_ERR(base)) | 224 | if (IS_ERR(base)) |
228 | return PTR_ERR(base); | 225 | return PTR_ERR(base); |