mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	ext4: Check for return value from sb_set_blocksize
sb_set_blocksize validates whether the specfied block size can be used by the file system. Make sure we fail mounting the file system if the blocksize specfied cannot be used. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Mingming Cao <cmm@us.ibm.com>
This commit is contained in:
		
							parent
							
								
									cb45bbe44b
								
							
						
					
					
						commit
						ce40733ce9
					
				
					 1 changed files with 5 additions and 10 deletions
				
			
		| 
						 | 
				
			
			@ -1812,7 +1812,6 @@ static int ext4_fill_super (struct super_block *sb, void *data, int silent)
 | 
			
		|||
	unsigned long def_mount_opts;
 | 
			
		||||
	struct inode *root;
 | 
			
		||||
	int blocksize;
 | 
			
		||||
	int hblock;
 | 
			
		||||
	int db_count;
 | 
			
		||||
	int i;
 | 
			
		||||
	int needs_recovery;
 | 
			
		||||
| 
						 | 
				
			
			@ -1969,20 +1968,16 @@ static int ext4_fill_super (struct super_block *sb, void *data, int silent)
 | 
			
		|||
		goto failed_mount;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	hblock = bdev_hardsect_size(sb->s_bdev);
 | 
			
		||||
	if (sb->s_blocksize != blocksize) {
 | 
			
		||||
		/*
 | 
			
		||||
		 * Make sure the blocksize for the filesystem is larger
 | 
			
		||||
		 * than the hardware sectorsize for the machine.
 | 
			
		||||
		 */
 | 
			
		||||
		if (blocksize < hblock) {
 | 
			
		||||
			printk(KERN_ERR "EXT4-fs: blocksize %d too small for "
 | 
			
		||||
			       "device blocksize %d.\n", blocksize, hblock);
 | 
			
		||||
 | 
			
		||||
		/* Validate the filesystem blocksize */
 | 
			
		||||
		if (!sb_set_blocksize(sb, blocksize)) {
 | 
			
		||||
			printk(KERN_ERR "EXT4-fs: bad block size %d.\n",
 | 
			
		||||
					blocksize);
 | 
			
		||||
			goto failed_mount;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		brelse (bh);
 | 
			
		||||
		sb_set_blocksize(sb, blocksize);
 | 
			
		||||
		logical_sb_block = sb_block * EXT4_MIN_BLOCK_SIZE;
 | 
			
		||||
		offset = do_div(logical_sb_block, blocksize);
 | 
			
		||||
		bh = sb_bread(sb, logical_sb_block);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue