|
@@ -545,6 +545,7 @@ int cifs_close(struct inode *inode, struct file *file)
|
|
|
} else
|
|
|
rc = -EBADF;
|
|
|
|
|
|
+ read_lock(&GlobalSMBSeslock);
|
|
|
if (list_empty(&(CIFS_I(inode)->openFileList))) {
|
|
|
cFYI(1, ("closing last open instance for inode %p", inode));
|
|
|
/* if the file is not open we do not know if we can cache info
|
|
@@ -552,6 +553,7 @@ int cifs_close(struct inode *inode, struct file *file)
|
|
|
CIFS_I(inode)->clientCanCacheRead = FALSE;
|
|
|
CIFS_I(inode)->clientCanCacheAll = FALSE;
|
|
|
}
|
|
|
+ read_unlock(&GlobalSMBSeslock);
|
|
|
if ((rc == 0) && CIFS_I(inode)->write_behind_rc)
|
|
|
rc = CIFS_I(inode)->write_behind_rc;
|
|
|
FreeXid(xid);
|