PM: sleep: stats: Use locking in dpm_save_failed_dev()
Because dpm_save_failed_dev() may be called simultaneously by multiple failing device PM functions, the state of the suspend_stats fields updated by it may become inconsistent. Prevent that from happening by using a lock in dpm_save_failed_dev(). Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com> Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
4add3e72f0
commit
a6d38e991d
@ -325,13 +325,18 @@ struct suspend_stats {
|
||||
};
|
||||
|
||||
static struct suspend_stats suspend_stats;
|
||||
static DEFINE_MUTEX(suspend_stats_lock);
|
||||
|
||||
void dpm_save_failed_dev(const char *name)
|
||||
{
|
||||
mutex_lock(&suspend_stats_lock);
|
||||
|
||||
strscpy(suspend_stats.failed_devs[suspend_stats.last_failed_dev],
|
||||
name, sizeof(suspend_stats.failed_devs[0]));
|
||||
suspend_stats.last_failed_dev++;
|
||||
suspend_stats.last_failed_dev %= REC_FAILED_NUM;
|
||||
|
||||
mutex_unlock(&suspend_stats_lock);
|
||||
}
|
||||
|
||||
void dpm_save_failed_step(enum suspend_stat_step step)
|
||||
|
Loading…
Reference in New Issue
Block a user