*/
 static struct dentry *ll_find_alias(struct inode *inode, struct dentry *dentry)
 {
-       struct dentry *alias, *invalid_alias;
+       struct dentry *alias;
 
        if (hlist_empty(&inode->i_dentry))
                return NULL;
 
-       invalid_alias = NULL;
-
        spin_lock(&inode->i_lock);
        hlist_for_each_entry(alias, &inode->i_dentry, d_u.d_alias) {
                LASSERT(alias != dentry);
                    alias->d_name.hash == dentry->d_name.hash       &&
                    alias->d_name.len == dentry->d_name.len      &&
                    memcmp(alias->d_name.name, dentry->d_name.name,
-                          dentry->d_name.len) == 0)
-                       invalid_alias = alias;
-               spin_unlock(&alias->d_lock);
-
-               if (invalid_alias)
-                       break;
-       }
-       alias = invalid_alias ?: NULL;
-       if (alias) {
-               spin_lock(&alias->d_lock);
-               dget_dlock(alias);
+                          dentry->d_name.len) == 0) {
+                       dget_dlock(alias);
+                       spin_unlock(&alias->d_lock);
+                       spin_unlock(&inode->i_lock);
+                       return alias;
+               }
                spin_unlock(&alias->d_lock);
        }
        spin_unlock(&inode->i_lock);
 
-       return alias;
+       return NULL;
 }
 
 /*