Commit fe9161db authored by Srivatsa S. Bhat's avatar Srivatsa S. Bhat Committed by Rafael J. Wysocki

PM / Hibernate: Thaw kernel threads in SNAPSHOT_CREATE_IMAGE ioctl path

In the SNAPSHOT_CREATE_IMAGE ioctl, if the call to hibernation_snapshot()
fails, the frozen tasks are not thawed.

And in the case of success, if we happen to exit due to a successful freezer
test, all tasks (including those of userspace) are thawed, whereas actually
we should have thawed only the kernel threads at that point. Fix both these
issues.
Signed-off-by: default avatarSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
Cc: stable@vger.kernel.org
parent 62aa2b53
...@@ -249,13 +249,15 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd, ...@@ -249,13 +249,15 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd,
} }
pm_restore_gfp_mask(); pm_restore_gfp_mask();
error = hibernation_snapshot(data->platform_support); error = hibernation_snapshot(data->platform_support);
if (!error) { if (error) {
thaw_kernel_threads();
} else {
error = put_user(in_suspend, (int __user *)arg); error = put_user(in_suspend, (int __user *)arg);
if (!error && !freezer_test_done) if (!error && !freezer_test_done)
data->ready = 1; data->ready = 1;
if (freezer_test_done) { if (freezer_test_done) {
freezer_test_done = false; freezer_test_done = false;
thaw_processes(); thaw_kernel_threads();
} }
} }
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment