Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -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;