]> git.baikalelectronics.ru Git - kernel.git/commit
freezer: test freezable conditions while holding freezer_lock
authorTejun Heo <tj@kernel.org>
Mon, 21 Nov 2011 20:32:24 +0000 (12:32 -0800)
committerTejun Heo <tj@kernel.org>
Mon, 21 Nov 2011 20:32:24 +0000 (12:32 -0800)
commita768c0f5761808a1572638afd361d54ba8c864dc
treea1839143272cc4e6593e5d4c97e8a3c39aed08ff
parent3cf3cfa76c5d7a182ff0072622cdd7229f22c222
freezer: test freezable conditions while holding freezer_lock

try_to_freeze_tasks() and thaw_processes() use freezable() and
frozen() as preliminary tests before initiating operations on a task.
These are done without any synchronization and hinder with
synchronization cleanup without any real performance benefits.

In try_to_freeze_tasks(), open code self test and move PF_NOFREEZE and
frozen() tests inside freezer_lock in freeze_task().

thaw_processes() can simply drop freezable() test as frozen() test in
__thaw_task() is enough.

Note: This used to be a part of larger patch to fix set_freezable()
      race.  Separated out to satisfy ordering among dependent fixes.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Oleg Nesterov <oleg@redhat.com>
kernel/freezer.c
kernel/power/process.c