From d9b5b210353473121b89e0d050d3b127a9056ab5 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Thu, 29 Nov 2012 22:11:06 -0500 Subject: [PATCH] --- yaml --- r: 336175 b: refs/heads/master c: 0903a0c8491c1e987dfc6eb294199a36760398bc h: refs/heads/master i: 336173: b3538e93278ce6be0f157d7ae8dca391a4b5343e 336171: 8644bd010e1c8771fb5bbf942e1bb8ab8a5adef0 336167: 260bf4a11caad070bc0a6f3bb7a1a13349dcb05b 336159: f8d92d6f72c29a4fdf33a54515211ce4602dcc81 v: v3 --- [refs] | 2 +- trunk/fs/cifs/readdir.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index a842af46ffa9..efa252a921f3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c44600c9d1de64314c2bd58103f15acb53e10073 +refs/heads/master: 0903a0c8491c1e987dfc6eb294199a36760398bc diff --git a/trunk/fs/cifs/readdir.c b/trunk/fs/cifs/readdir.c index f9b5d3d6cf33..1c576e871366 100644 --- a/trunk/fs/cifs/readdir.c +++ b/trunk/fs/cifs/readdir.c @@ -86,14 +86,17 @@ cifs_readdir_lookup(struct dentry *parent, struct qstr *name, dentry = d_lookup(parent, name); if (dentry) { + int err; inode = dentry->d_inode; /* update inode in place if i_ino didn't change */ if (inode && CIFS_I(inode)->uniqueid == fattr->cf_uniqueid) { cifs_fattr_to_inode(inode, fattr); return dentry; } - d_drop(dentry); + err = d_invalidate(dentry); dput(dentry); + if (err) + return NULL; } dentry = d_alloc(parent, name);