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 --- |