|
@@ -1824,6 +1824,7 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile)
|
|
|
struct filename *pathname;
|
|
|
int i, type, prev;
|
|
|
int err;
|
|
|
+ unsigned int old_block_size;
|
|
|
|
|
|
if (!capable(CAP_SYS_ADMIN))
|
|
|
return -EPERM;
|
|
@@ -1914,6 +1915,7 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile)
|
|
|
}
|
|
|
|
|
|
swap_file = p->swap_file;
|
|
|
+ old_block_size = p->old_block_size;
|
|
|
p->swap_file = NULL;
|
|
|
p->max = 0;
|
|
|
swap_map = p->swap_map;
|
|
@@ -1938,7 +1940,7 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile)
|
|
|
inode = mapping->host;
|
|
|
if (S_ISBLK(inode->i_mode)) {
|
|
|
struct block_device *bdev = I_BDEV(inode);
|
|
|
- set_blocksize(bdev, p->old_block_size);
|
|
|
+ set_blocksize(bdev, old_block_size);
|
|
|
blkdev_put(bdev, FMODE_READ | FMODE_WRITE | FMODE_EXCL);
|
|
|
} else {
|
|
|
mutex_lock(&inode->i_mutex);
|