diff --git a/fs/cifs/file.c b/fs/cifs/file.c index 8703b5f26f452fbd9ddc4979655c2f16301fea7f..e6e7d5d23f828b69a64070af57ea11ddb2a0fc6f 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c @@ -252,6 +252,12 @@ cifs_nt_open(char *full_path, struct inode *inode, struct cifs_sb_info *cifs_sb, rc = cifs_get_inode_info(&inode, full_path, buf, inode->i_sb, xid, fid); + if (rc) { + server->ops->close(xid, tcon, fid); + if (rc == -ESTALE) + rc = -EOPENSTALE; + } + out: kfree(buf); return rc;