1722 spin_unlock(&swap_lock);
1723 mutex_unlock(&swapon_mutex);
1724 error = 0;
1725 goto out;
1726bad_swap:
1727 if (bdev) {
1728 set_blocksize(bdev, p->old_block_size);
1729 bd_release(bdev);
1730 }
1731 destroy_swap_extents(p);
1732bad_swap_2:
1733 spin_lock(&swap_lock);
1734 p->swap_file = NULL;
1735 p->flags = 0;
1736 spin_unlock(&swap_lock);
1737 vfree(swap_map);
1738 if (swap_file)
1739 filp_close(swap_file, NULL);
1740out:
1741 if (page && !IS_ERR(page)) {
1742 kunmap(page);
1743 page_cache_release(page);
1744 }
1745 if (name)
1746 putname(name);
1747 if (did_down) {
1748 if (!error)
1749 inode->i_flags |= S_SWAPFILE;
1750 mutex_unlock(&inode->i_mutex);
1751 }
1752 return error;
1753}
1754
1755void si_swapinfo(struct sysinfo *val)
1756{
1757 unsigned int i;
1758 unsigned long nr_to_be_unused = 0;
1759
1760 spin_lock(&swap_lock);
1761 for (i = 0; i < nr_swapfiles; i++) {
1762 if (!(swap_info[i].flags & SWP_USED) ||