diff options
| author | Mike Frysinger <vapier@gentoo.org> | 2011-04-25 06:33:15 -0400 |
|---|---|---|
| committer | Rafael J. Wysocki <rjw@sisk.pl> | 2011-05-17 17:19:17 -0400 |
| commit | ee940d8dccd899aa1777ea84da3d9cd04b1d2e8e (patch) | |
| tree | 0bb19033f820a485dea0c5fc848206b6479fc7df /kernel | |
| parent | 3c431936087e93d2219a184a8e19eaa68077e379 (diff) | |
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>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/freezer.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/freezer.c b/kernel/freezer.c index 66ecd2ead215..7b01de98bb6a 100644 --- a/kernel/freezer.c +++ b/kernel/freezer.c | |||
| @@ -17,7 +17,7 @@ static inline void frozen_process(void) | |||
| 17 | { | 17 | { |
| 18 | if (!unlikely(current->flags & PF_NOFREEZE)) { | 18 | if (!unlikely(current->flags & PF_NOFREEZE)) { |
| 19 | current->flags |= PF_FROZEN; | 19 | current->flags |= PF_FROZEN; |
| 20 | wmb(); | 20 | smp_wmb(); |
| 21 | } | 21 | } |
| 22 | clear_freeze_flag(current); | 22 | clear_freeze_flag(current); |
| 23 | } | 23 | } |
| @@ -93,7 +93,7 @@ bool freeze_task(struct task_struct *p, bool sig_only) | |||
| 93 | * the task as frozen and next clears its TIF_FREEZE. | 93 | * the task as frozen and next clears its TIF_FREEZE. |
| 94 | */ | 94 | */ |
| 95 | if (!freezing(p)) { | 95 | if (!freezing(p)) { |
| 96 | rmb(); | 96 | smp_rmb(); |
| 97 | if (frozen(p)) | 97 | if (frozen(p)) |
| 98 | return false; | 98 | return false; |
| 99 | 99 | ||
