user.c (915bae9ebe41e52d71ad8b06d50e4ab26189f964) user.c (3aef83e0ef1ffb8ea3bea97be46821a45c952173)
1/*
2 * linux/kernel/power/user.c
3 *
4 * This file provides the user space interface for software suspend/resume.
5 *
6 * Copyright (C) 2006 Rafael J. Wysocki <rjw@sisk.pl>
7 *
8 * This file is released under the GPLv2.

--- 112 unchanged lines hidden (view full) ---

121 return res;
122}
123
124static int snapshot_ioctl(struct inode *inode, struct file *filp,
125 unsigned int cmd, unsigned long arg)
126{
127 int error = 0;
128 struct snapshot_data *data;
1/*
2 * linux/kernel/power/user.c
3 *
4 * This file provides the user space interface for software suspend/resume.
5 *
6 * Copyright (C) 2006 Rafael J. Wysocki <rjw@sisk.pl>
7 *
8 * This file is released under the GPLv2.

--- 112 unchanged lines hidden (view full) ---

121 return res;
122}
123
124static int snapshot_ioctl(struct inode *inode, struct file *filp,
125 unsigned int cmd, unsigned long arg)
126{
127 int error = 0;
128 struct snapshot_data *data;
129 loff_t offset, avail;
129 loff_t avail;
130 sector_t offset;
130
131 if (_IOC_TYPE(cmd) != SNAPSHOT_IOC_MAGIC)
132 return -ENOTTY;
133 if (_IOC_NR(cmd) > SNAPSHOT_IOC_MAXNR)
134 return -ENOTTY;
135 if (!capable(CAP_SYS_ADMIN))
136 return -EPERM;
137

--- 97 unchanged lines hidden (view full) ---

235 }
236 if (!data->bitmap) {
237 data->bitmap = alloc_bitmap(count_swap_pages(data->swap, 0));
238 if (!data->bitmap) {
239 error = -ENOMEM;
240 break;
241 }
242 }
131
132 if (_IOC_TYPE(cmd) != SNAPSHOT_IOC_MAGIC)
133 return -ENOTTY;
134 if (_IOC_NR(cmd) > SNAPSHOT_IOC_MAXNR)
135 return -ENOTTY;
136 if (!capable(CAP_SYS_ADMIN))
137 return -EPERM;
138

--- 97 unchanged lines hidden (view full) ---

236 }
237 if (!data->bitmap) {
238 data->bitmap = alloc_bitmap(count_swap_pages(data->swap, 0));
239 if (!data->bitmap) {
240 error = -ENOMEM;
241 break;
242 }
243 }
243 offset = alloc_swap_page(data->swap, data->bitmap);
244 offset = alloc_swapdev_block(data->swap, data->bitmap);
244 if (offset) {
245 offset <<= PAGE_SHIFT;
245 if (offset) {
246 offset <<= PAGE_SHIFT;
246 error = put_user(offset, (loff_t __user *)arg);
247 error = put_user(offset, (sector_t __user *)arg);
247 } else {
248 error = -ENOSPC;
249 }
250 break;
251
252 case SNAPSHOT_FREE_SWAP_PAGES:
253 if (data->swap < 0 || data->swap >= MAX_SWAPFILES) {
254 error = -ENODEV;

--- 119 unchanged lines hidden ---
248 } else {
249 error = -ENOSPC;
250 }
251 break;
252
253 case SNAPSHOT_FREE_SWAP_PAGES:
254 if (data->swap < 0 || data->swap >= MAX_SWAPFILES) {
255 error = -ENODEV;

--- 119 unchanged lines hidden ---