BACKPORT: 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 <aparnam@codeaurora.org> [avajid@codeaurora.org: updated to merge better with upstream changes and removed renaming since done in previous commit] Signed-off-by: Amir Vajid <avajid@codeaurora.org> Signed-off-by: UtsavBalar1231 <utsavbalar1231@gmail.com>
This commit is contained in:
parent
75f5520077
commit
99d9cca590
@ -906,8 +906,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;
|
||||
}
|
||||
@ -951,8 +953,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 New Issue
Block a user