From: Latchesar Ionkov If a file is not found in v9fs_vfs_lookup, the function creates negative dentry, but doesn't assign any dentry ops. This leaves the negative entry in the cache (there is no d_delete to mark it for removal). If the file is created outside of the mounted v9fs filesystem, the file shows up in the directory with weird permissions. This patch assigns the default v9fs dentry ops to the negative dentry. Signed-off-by: Latchesar Ionkov Signed-off-by: Eric Van Hensbergen Signed-off-by: Andrew Morton --- fs/9p/vfs_inode.c | 3 +-- 1 files changed, 1 insertion(+), 2 deletions(-) diff -puN fs/9p/vfs_inode.c~v9fs-assign-dentry-ops-to-negative-dentries fs/9p/vfs_inode.c --- devel/fs/9p/vfs_inode.c~v9fs-assign-dentry-ops-to-negative-dentries 2006-03-17 17:53:18.000000000 -0800 +++ devel-akpm/fs/9p/vfs_inode.c 2006-03-17 17:53:18.000000000 -0800 @@ -614,6 +614,7 @@ static struct dentry *v9fs_vfs_lookup(st sb = dir->i_sb; v9ses = v9fs_inode2v9ses(dir); + dentry->d_op = &v9fs_dentry_operations; dirfid = v9fs_fid_lookup(dentry->d_parent); if (!dirfid) { @@ -681,8 +682,6 @@ static struct dentry *v9fs_vfs_lookup(st goto FreeFcall; fid->qid = fcall->params.rstat.stat.qid; - - dentry->d_op = &v9fs_dentry_operations; v9fs_stat2inode(&fcall->params.rstat.stat, inode, inode->i_sb); d_add(dentry, inode); _