UBI: remove PEB from free tree in get_peb_for_wl()
If UBI is built without fastmap, get_peb_for_wl() has to remove the PEB manially from the free tree. Otherwise the requested PEB lives in two trees. Reported-by: Zach Sadecki <zsadecki@itwatchdogs.com> Signed-off-by: Richard Weinberger <richard@nod.at> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
This commit is contained in:
		
					parent
					
						
							
								9489e9dcae
							
						
					
				
			
			
				commit
				
					
						ed4b7021cb
					
				
			
		
					 1 changed files with 7 additions and 1 deletions
				
			
		|  | @ -679,7 +679,13 @@ static struct ubi_wl_entry *get_peb_for_wl(struct ubi_device *ubi) | |||
| #else | ||||
| static struct ubi_wl_entry *get_peb_for_wl(struct ubi_device *ubi) | ||||
| { | ||||
| 	return find_wl_entry(ubi, &ubi->free, WL_FREE_MAX_DIFF); | ||||
| 	struct ubi_wl_entry *e; | ||||
| 
 | ||||
| 	e = find_wl_entry(ubi, &ubi->free, WL_FREE_MAX_DIFF); | ||||
| 	self_check_in_wl_tree(ubi, e, &ubi->free); | ||||
| 	rb_erase(&e->u.rb, &ubi->free); | ||||
| 
 | ||||
| 	return e; | ||||
| } | ||||
| 
 | ||||
| int ubi_wl_get_peb(struct ubi_device *ubi) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Richard Weinberger
				Richard Weinberger