Freezer: Use SMP barriers
The freezer processes are dealing with multiple threads running simultaneously, and on a UP system, the memory reads/writes do not need barriers to keep things in sync. These are only needed on SMP systems, so use SMP barriers instead. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Acked-by: Pavel Machek <pavel@ucw.cz> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
This commit is contained in:
Родитель
3c43193608
Коммит
ee940d8dcc
|
@ -17,7 +17,7 @@ static inline void frozen_process(void)
|
|||
{
|
||||
if (!unlikely(current->flags & PF_NOFREEZE)) {
|
||||
current->flags |= PF_FROZEN;
|
||||
wmb();
|
||||
smp_wmb();
|
||||
}
|
||||
clear_freeze_flag(current);
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ bool freeze_task(struct task_struct *p, bool sig_only)
|
|||
* the task as frozen and next clears its TIF_FREEZE.
|
||||
*/
|
||||
if (!freezing(p)) {
|
||||
rmb();
|
||||
smp_rmb();
|
||||
if (frozen(p))
|
||||
return false;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче