diff options
Diffstat (limited to 'mm/swapfile.c')
-rw-r--r-- | mm/swapfile.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/mm/swapfile.c b/mm/swapfile.c index 8e206cea0f5e..f315131db006 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c | |||
@@ -1552,6 +1552,11 @@ asmlinkage long sys_swapon(const char __user * specialfile, int swap_flags) | |||
1552 | error = -EINVAL; | 1552 | error = -EINVAL; |
1553 | if (!maxpages) | 1553 | if (!maxpages) |
1554 | goto bad_swap; | 1554 | goto bad_swap; |
1555 | if (swapfilesize && maxpages > swapfilesize) { | ||
1556 | printk(KERN_WARNING | ||
1557 | "Swap area shorter than signature indicates\n"); | ||
1558 | goto bad_swap; | ||
1559 | } | ||
1555 | if (swap_header->info.nr_badpages && S_ISREG(inode->i_mode)) | 1560 | if (swap_header->info.nr_badpages && S_ISREG(inode->i_mode)) |
1556 | goto bad_swap; | 1561 | goto bad_swap; |
1557 | if (swap_header->info.nr_badpages > MAX_SWAP_BADPAGES) | 1562 | if (swap_header->info.nr_badpages > MAX_SWAP_BADPAGES) |
@@ -1579,12 +1584,6 @@ asmlinkage long sys_swapon(const char __user * specialfile, int swap_flags) | |||
1579 | goto bad_swap; | 1584 | goto bad_swap; |
1580 | } | 1585 | } |
1581 | 1586 | ||
1582 | if (swapfilesize && maxpages > swapfilesize) { | ||
1583 | printk(KERN_WARNING | ||
1584 | "Swap area shorter than signature indicates\n"); | ||
1585 | error = -EINVAL; | ||
1586 | goto bad_swap; | ||
1587 | } | ||
1588 | if (nr_good_pages) { | 1587 | if (nr_good_pages) { |
1589 | p->swap_map[0] = SWAP_MAP_BAD; | 1588 | p->swap_map[0] = SWAP_MAP_BAD; |
1590 | p->max = maxpages; | 1589 | p->max = maxpages; |