|
@@ -1239,13 +1239,13 @@ ascend:
|
|
|
/* might go back up the wrong parent if we have had a rename. */
|
|
|
if (need_seqretry(&rename_lock, seq))
|
|
|
goto rename_retry;
|
|
|
- next = child->d_child.next;
|
|
|
- while (unlikely(child->d_flags & DCACHE_DENTRY_KILLED)) {
|
|
|
+ /* go into the first sibling still alive */
|
|
|
+ do {
|
|
|
+ next = child->d_child.next;
|
|
|
if (next == &this_parent->d_subdirs)
|
|
|
goto ascend;
|
|
|
child = list_entry(next, struct dentry, d_child);
|
|
|
- next = next->next;
|
|
|
- }
|
|
|
+ } while (unlikely(child->d_flags & DCACHE_DENTRY_KILLED));
|
|
|
rcu_read_unlock();
|
|
|
goto resume;
|
|
|
}
|