On Fri, 21 May 2010 14:45:55 -0400 Josef Bacik <josef@xxxxxxxxxx> wrote: > On Fri, May 21, 2010 at 02:25:14PM -0400, Jeff Layton wrote: > > cifs_lookup doesn't actually return a dentry. It instantiates the one > > that's passed in, but callers don't have any way to know if the lookup > > succeeded. > > > > Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> > > --- > > fs/cifs/dir.c | 13 +++++++++---- > > 1 files changed, 9 insertions(+), 4 deletions(-) > > > > diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c > > index 391816b..54de8e5 100644 > > --- a/fs/cifs/dir.c > > +++ b/fs/cifs/dir.c > > @@ -639,6 +639,7 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry, > > struct inode *newInode = NULL; > > char *full_path = NULL; > > struct file *filp; > > + struct dentry *res; > > > > xid = GetXid(); > > > > @@ -738,7 +739,8 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry, > > /* since paths are not looked up by component - the parent > > directories are presumed to be good here */ > > renew_parental_timestamps(direntry); > > - > > + res = direntry; > > + dget(res); > > } else if (rc == -ENOENT) { > > rc = 0; > > direntry->d_time = jiffies; > > @@ -747,17 +749,20 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry, > > else > > direntry->d_op = &cifs_dentry_ops; > > d_add(direntry, NULL); > > - /* if it was once a directory (but how can we tell?) we could do > > - shrink_dcache_parent(direntry); */ > > + res = direntry; > > + dget(res); > > Should probably do > > res = dget(direntry) > Ahh good catch. Will fix. Thanks, -- Jeff Layton <jlayton@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html