mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
PM / devfreq: Fix race condition between suspend/resume and governor_store
There is a race condition when the event governor_store is being executed from sysfs and the device issues a suspend. The devfreq data structures would become stale when the suspend tries to access them in the middle of the governor_store operation. Fix this issue by taking a lock around suspend and resume operations so that these operations are not concurrent with the other events from sysfs. Change-Id: Ifa0e93915a920cec3e0429966328a1128d61098b Signed-off-by: Rama Aparna Mallavarapu <[email protected]> [[email protected]: updated to merge better with upstream changes and removed renaming since done in previous commit] Signed-off-by: Amir Vajid <[email protected]>
This commit is contained in:
parent
9693b4d620
commit
96784c4520
1 changed files with 4 additions and 0 deletions
|
|
@ -896,8 +896,10 @@ int devfreq_suspend_device(struct devfreq *devfreq)
|
|||
return 0;
|
||||
|
||||
if (devfreq->governor) {
|
||||
event_mutex_lock(devfreq);
|
||||
ret = devfreq->governor->event_handler(devfreq,
|
||||
DEVFREQ_GOV_SUSPEND, NULL);
|
||||
event_mutex_unlock(devfreq);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -937,8 +939,10 @@ int devfreq_resume_device(struct devfreq *devfreq)
|
|||
}
|
||||
|
||||
if (devfreq->governor) {
|
||||
event_mutex_lock(devfreq);
|
||||
ret = devfreq->governor->event_handler(devfreq,
|
||||
DEVFREQ_GOV_RESUME, NULL);
|
||||
event_mutex_unlock(devfreq);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue