From: green Date: Thu, 16 Sep 2004 18:13:48 +0000 (+0000) Subject: r=adilger X-Git-Tag: v1_8_0_110~486^5~161 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=1bb39b8908dfc455d3bf7eb74c3ae50047bceacf;p=fs%2Flustre-release.git r=adilger Patch from SuSE: revalidate_special() is called from link_path_walk as the last path component is (".."). In revalidate_special() we called real_lookup(dentry->d_parent,&dentry->d_name, nd), which called cifs_lookup(). which doesnot initialises dentry->d_op pointer if there is no corresponding inode to the dentry. cifs_lookup() returned NULL dentry with d_op() as NULL. so, in the second iteration of the loop in revalidate_special() we have d_op as NULL and hence the crash in if (!dentry->d_op->d_revalidate(dentry, nd)) { --- diff --git a/lustre/kernel_patches/patches/vfs_intent-2.6-suse.patch b/lustre/kernel_patches/patches/vfs_intent-2.6-suse.patch index f8781be..bff461f 100644 --- a/lustre/kernel_patches/patches/vfs_intent-2.6-suse.patch +++ b/lustre/kernel_patches/patches/vfs_intent-2.6-suse.patch @@ -101,9 +101,9 @@ Index: linux-2.6.5-12.1/fs/namei.c + struct dentry *dentry = nd->dentry; + int err, counter = 0; + ++ revalidate_again: + if (!dentry->d_op || !dentry->d_op->d_revalidate) + return 0; -+ revalidate_again: + if (!dentry->d_op->d_revalidate(dentry, nd)) { + struct dentry *new; + if ((err = permission(dentry->d_parent->d_inode, MAY_EXEC,nd))) diff --git a/lustre/kernel_patches/patches/vfs_intent-2.6-vanilla.patch b/lustre/kernel_patches/patches/vfs_intent-2.6-vanilla.patch index 90c1223..592f0e2 100644 --- a/lustre/kernel_patches/patches/vfs_intent-2.6-vanilla.patch +++ b/lustre/kernel_patches/patches/vfs_intent-2.6-vanilla.patch @@ -101,9 +101,9 @@ Index: linux-2.6.6-vanilla/fs/namei.c + struct dentry *dentry = nd->dentry; + int err, counter = 0; + ++ revalidate_again: + if (!dentry->d_op || !dentry->d_op->d_revalidate) + return 0; -+ revalidate_again: + if (!dentry->d_op->d_revalidate(dentry, nd)) { + struct dentry *new; + if ((err = permission(dentry->d_parent->d_inode, MAY_EXEC, nd)))