|
@@ -135,8 +135,10 @@ static int snapshot_release(struct inode *inode, struct file *filp)
|
|
free_basic_memory_bitmaps();
|
|
free_basic_memory_bitmaps();
|
|
data = filp->private_data;
|
|
data = filp->private_data;
|
|
free_all_swap_pages(data->swap);
|
|
free_all_swap_pages(data->swap);
|
|
- if (data->frozen)
|
|
|
|
|
|
+ if (data->frozen) {
|
|
|
|
+ pm_restore_gfp_mask();
|
|
thaw_processes();
|
|
thaw_processes();
|
|
|
|
+ }
|
|
pm_notifier_call_chain(data->mode == O_RDONLY ?
|
|
pm_notifier_call_chain(data->mode == O_RDONLY ?
|
|
PM_POST_HIBERNATION : PM_POST_RESTORE);
|
|
PM_POST_HIBERNATION : PM_POST_RESTORE);
|
|
atomic_inc(&snapshot_device_available);
|
|
atomic_inc(&snapshot_device_available);
|
|
@@ -379,6 +381,7 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd,
|
|
* PM_HIBERNATION_PREPARE
|
|
* PM_HIBERNATION_PREPARE
|
|
*/
|
|
*/
|
|
error = suspend_devices_and_enter(PM_SUSPEND_MEM);
|
|
error = suspend_devices_and_enter(PM_SUSPEND_MEM);
|
|
|
|
+ data->ready = 0;
|
|
break;
|
|
break;
|
|
|
|
|
|
case SNAPSHOT_PLATFORM_SUPPORT:
|
|
case SNAPSHOT_PLATFORM_SUPPORT:
|