swapfile.c (123656d4cc8c946f578ebd18c2050f5251720428) swapfile.c (cd105df4590c89837a1c300843238148cfef9b5f)
1/*
2 * linux/mm/swapfile.c
3 *
4 * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds
5 * Swap reorganised 29.12.95, Stephen Tweedie
6 */
7
8#include <linux/config.h>

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

1488
1489 error = -EINVAL;
1490 if (!maxpages)
1491 goto bad_swap;
1492 if (swap_header->info.nr_badpages && S_ISREG(inode->i_mode))
1493 goto bad_swap;
1494 if (swap_header->info.nr_badpages > MAX_SWAP_BADPAGES)
1495 goto bad_swap;
1/*
2 * linux/mm/swapfile.c
3 *
4 * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds
5 * Swap reorganised 29.12.95, Stephen Tweedie
6 */
7
8#include <linux/config.h>

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

1488
1489 error = -EINVAL;
1490 if (!maxpages)
1491 goto bad_swap;
1492 if (swap_header->info.nr_badpages && S_ISREG(inode->i_mode))
1493 goto bad_swap;
1494 if (swap_header->info.nr_badpages > MAX_SWAP_BADPAGES)
1495 goto bad_swap;
1496
1496
1497 /* OK, set up the swap map and apply the bad block list */
1498 if (!(p->swap_map = vmalloc(maxpages * sizeof(short)))) {
1499 error = -ENOMEM;
1500 goto bad_swap;
1501 }
1502
1503 error = 0;
1504 memset(p->swap_map, 0, maxpages * sizeof(short));
1497 /* OK, set up the swap map and apply the bad block list */
1498 if (!(p->swap_map = vmalloc(maxpages * sizeof(short)))) {
1499 error = -ENOMEM;
1500 goto bad_swap;
1501 }
1502
1503 error = 0;
1504 memset(p->swap_map, 0, maxpages * sizeof(short));
1505 for (i=0; i<swap_header->info.nr_badpages; i++) {
1506 int page = swap_header->info.badpages[i];
1507 if (page <= 0 || page >= swap_header->info.last_page)
1505 for (i = 0; i < swap_header->info.nr_badpages; i++) {
1506 int page_nr = swap_header->info.badpages[i];
1507 if (page_nr <= 0 || page_nr >= swap_header->info.last_page)
1508 error = -EINVAL;
1509 else
1508 error = -EINVAL;
1509 else
1510 p->swap_map[page] = SWAP_MAP_BAD;
1510 p->swap_map[page_nr] = SWAP_MAP_BAD;
1511 }
1512 nr_good_pages = swap_header->info.last_page -
1513 swap_header->info.nr_badpages -
1514 1 /* header page */;
1511 }
1512 nr_good_pages = swap_header->info.last_page -
1513 swap_header->info.nr_badpages -
1514 1 /* header page */;
1515 if (error)
1515 if (error)
1516 goto bad_swap;
1517 }
1518
1519 if (swapfilesize && maxpages > swapfilesize) {
1520 printk(KERN_WARNING
1521 "Swap area shorter than signature indicates\n");
1522 error = -EINVAL;
1523 goto bad_swap;

--- 175 unchanged lines hidden ---
1516 goto bad_swap;
1517 }
1518
1519 if (swapfilesize && maxpages > swapfilesize) {
1520 printk(KERN_WARNING
1521 "Swap area shorter than signature indicates\n");
1522 error = -EINVAL;
1523 goto bad_swap;

--- 175 unchanged lines hidden ---