diff options
author | Chanwoo Choi | 2014-05-09 09:43:07 +0200 |
---|---|---|
committer | MyungJoo Ham | 2014-05-24 15:33:34 +0200 |
commit | 585fc83ece43be63d5775e536f855db33dd752cf (patch) | |
tree | 0bea4c3fe8e818f8d2e455d48265709c6e429c9e /drivers/vhost | |
parent | PM / devfreq: exynos: make more PPMU code common (diff) | |
download | kernel-qcow2-linux-585fc83ece43be63d5775e536f855db33dd752cf.tar.gz kernel-qcow2-linux-585fc83ece43be63d5775e536f855db33dd752cf.tar.xz kernel-qcow2-linux-585fc83ece43be63d5775e536f855db33dd752cf.zip |
PM / devfreq: Fix devfreq_remove_device() to improve the sequence of resource free
This patch modify devfreq_remove_device() to improve the sequence of resource
free. If executing existing devfreq_remove_device(), this function always
executes _remove_devfreq() twice. In result, second _remove_devfreq() always
return error value. So, This patch resolves complicated function sequence
as following:
[Flow sequence before modification]
devfreq_remove_device()
_remove_devfreq(devfreq, false)
kfree(devfreq); /* Free devfreq */
if (!skip ...) { /* skip is false */
device_unregister(&devfreq->dev)
put_device(&devfreq->dev);
...
dev->release()
devfreq_dev_release()
_remove_devfreq(devfreq, true) <- Recall to free devfreq
/*
* Always return error without freeing resource because
* already _remove_devfreq() frees the memory of devfreq.
*/
}
[Flow sequence after modification]
devfreq_remove_device
device_unregister(&devfreq->dev)
put_device(&devfreq->dev);
..
dev->release()
devfreq_dev_release()
_remove_devfreq()
kfree(devfreq); /* Free devfreq */
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
[Merge conflict resolved by MyungJoo]
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Diffstat (limited to 'drivers/vhost')
0 files changed, 0 insertions, 0 deletions