History

swsusp: Fix userland interface

Fix oops caused by 'cat /dev/snapshot', reported by Arkadiusz Miskiewicz, and make it impossible to thaw tasks with the help of the swsusp userland interface while there is a snapshot image ready to save.

Rafael J. Wysocki committed 19 years ago

Commit 2f41ddd1 parent b1d93de1 file · +3 −1Browse files

Unified · Split

kernel/power/user.c+3−1
@@ -99,6 +99,8 @@ static ssize_t snapshot_read(struct file *filp, char __user *buf, · 98 unmodified lines
99 ssize_t res;99 ssize_t res;
100 100
101 data = filp->private_data;101 data = filp->private_data;
102 if (!data->ready)
103 return -ENODATA;
102 res = snapshot_read_next(&data->handle, count);104 res = snapshot_read_next(&data->handle, count);
103 if (res > 0) {105 if (res > 0) {
104 if (copy_to_user(buf, data_of(data->handle), res))106 if (copy_to_user(buf, data_of(data->handle), res))
@@ -245,7 +247,7 @@ static int snapshot_ioctl(struct inode *inode, struct file *filp, · 140 unmodified lines
245 break;247 break;
246 248
247 case SNAPSHOT_UNFREEZE:249 case SNAPSHOT_UNFREEZE:
248 if (!data->frozen)250 if (!data->frozen || data->ready)
249 break;251 break;
250 mutex_lock(&pm_mutex);252 mutex_lock(&pm_mutex);
251 thaw_processes();253 thaw_processes();