diff options
Diffstat (limited to 'fs/ubifs/log.c')
| -rw-r--r-- | fs/ubifs/log.c | 21 | 
1 files changed, 2 insertions, 19 deletions
diff --git a/fs/ubifs/log.c b/fs/ubifs/log.c index 36bd4efd0819..a902c5919e42 100644 --- a/fs/ubifs/log.c +++ b/fs/ubifs/log.c @@ -574,27 +574,10 @@ static int done_already(struct rb_root *done_tree, int lnum)   */  static void destroy_done_tree(struct rb_root *done_tree)  { -	struct rb_node *this = done_tree->rb_node; -	struct done_ref *dr; +	struct done_ref *dr, *n; -	while (this) { -		if (this->rb_left) { -			this = this->rb_left; -			continue; -		} else if (this->rb_right) { -			this = this->rb_right; -			continue; -		} -		dr = rb_entry(this, struct done_ref, rb); -		this = rb_parent(this); -		if (this) { -			if (this->rb_left == &dr->rb) -				this->rb_left = NULL; -			else -				this->rb_right = NULL; -		} +	rbtree_postorder_for_each_entry_safe(dr, n, done_tree, rb)  		kfree(dr); -	}  }  /**  |