aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>2012-02-04 17:39:56 -0500
committerRafael J. Wysocki <rjw@sisk.pl>2012-02-09 17:56:01 -0500
commita556d5b58345ccf51826b9ceac078072f830738b (patch)
tree35b66f1c49cf6f5437811051965f45a14f1ee15f
parent51d6ff7acd920379f54d0be4dbe844a46178a65f (diff)
PM / Hibernate: Refactor and simplify freezer_test_done
The code related to 'freezer_test_done' is needlessly convoluted. Refactor the code and simplify the implementation. Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
-rw-r--r--kernel/power/hibernate.c10
-rw-r--r--kernel/power/user.c6
2 files changed, 7 insertions, 9 deletions
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
index c6dee739080c..72baaf011fb7 100644
--- a/kernel/power/hibernate.c
+++ b/kernel/power/hibernate.c
@@ -629,12 +629,8 @@ int hibernate(void)
629 goto Finish; 629 goto Finish;
630 630
631 error = hibernation_snapshot(hibernation_mode == HIBERNATION_PLATFORM); 631 error = hibernation_snapshot(hibernation_mode == HIBERNATION_PLATFORM);
632 if (error) 632 if (error || freezer_test_done)
633 goto Thaw;
634 if (freezer_test_done) {
635 freezer_test_done = false;
636 goto Thaw; 633 goto Thaw;
637 }
638 634
639 if (in_suspend) { 635 if (in_suspend) {
640 unsigned int flags = 0; 636 unsigned int flags = 0;
@@ -659,6 +655,10 @@ int hibernate(void)
659 655
660 Thaw: 656 Thaw:
661 thaw_processes(); 657 thaw_processes();
658
659 /* Don't bother checking whether freezer_test_done is true */
660 freezer_test_done = false;
661
662 Finish: 662 Finish:
663 free_basic_memory_bitmaps(); 663 free_basic_memory_bitmaps();
664 usermodehelper_enable(); 664 usermodehelper_enable();
diff --git a/kernel/power/user.c b/kernel/power/user.c
index 7bee91f9af51..33c4329205af 100644
--- a/kernel/power/user.c
+++ b/kernel/power/user.c
@@ -251,10 +251,8 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd,
251 error = hibernation_snapshot(data->platform_support); 251 error = hibernation_snapshot(data->platform_support);
252 if (!error) { 252 if (!error) {
253 error = put_user(in_suspend, (int __user *)arg); 253 error = put_user(in_suspend, (int __user *)arg);
254 if (!error && !freezer_test_done) 254 data->ready = !freezer_test_done && !error;
255 data->ready = 1; 255 freezer_test_done = false;
256 if (freezer_test_done)
257 freezer_test_done = false;
258 } 256 }
259 break; 257 break;
260 258