forked from mirrors/linux
		
	mtd: Do not allow MTD devices with inconsistent erase properties
When mtd->erasesize is 0 or mtd->_erase is NULL, that means the device does not support the erase operation, which in turn means it should have the MTD_NO_ERASE flag set. Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com> Reviewed-by: Miquel Raynal <miquel.raynal@free-electrons.com>
This commit is contained in:
		
							parent
							
								
									911c3a30ca
								
							
						
					
					
						commit
						33f45c44d6
					
				
					 1 changed files with 5 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -503,6 +503,11 @@ int add_mtd_device(struct mtd_info *mtd)
 | 
			
		|||
		return -EEXIST;
 | 
			
		||||
 | 
			
		||||
	BUG_ON(mtd->writesize == 0);
 | 
			
		||||
 | 
			
		||||
	if (WARN_ON((!mtd->erasesize || !mtd->_erase) &&
 | 
			
		||||
		    !(mtd->flags & MTD_NO_ERASE)))
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
 | 
			
		||||
	mutex_lock(&mtd_table_mutex);
 | 
			
		||||
 | 
			
		||||
	i = idr_alloc(&mtd_idr, mtd, 0, 0, GFP_KERNEL);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue