r=adilger,nic
- landing Oleg's changes for releasing nameidata in ll_follow_link() on error
break;
}
goto return_base;
-@@ -643,6 +680,27 @@ return_reval:
+@@ -643,6 +680,34 @@ return_reval:
* Check the cached dentry for staleness.
*/
dentry = nd->dentry;
+ }
+ if (!nd->dentry->d_inode)
+ goto no_inode;
++ if (lookup_flags & LOOKUP_DIRECTORY) {
++ err = -ENOTDIR;
++ if (!nd->dentry->d_inode->i_op ||
++ (!nd->dentry->d_inode->i_op->lookup &&
++ !nd->dentry->d_inode->i_op->lookup_it))
++ break;
++ }
+ } else
if (dentry && dentry->d_op && dentry->d_op->d_revalidate) {
err = -ESTALE;