diff options
Diffstat (limited to 'fs/cifs/readdir.c')
| -rw-r--r-- | fs/cifs/readdir.c | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c index 0a8224d1c4c..a4217f02fab 100644 --- a/fs/cifs/readdir.c +++ b/fs/cifs/readdir.c @@ -86,9 +86,12 @@ cifs_readdir_lookup(struct dentry *parent, struct qstr *name,  	dentry = d_lookup(parent, name);  	if (dentry) { -		/* FIXME: check for inode number changes? */ -		if (dentry->d_inode != NULL) +		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);  		dput(dentry);  	}  |