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