Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6: cifs: fix fh_mutex locking in cifs_reopen_file
This commit is contained in:
commit
4142ac678a
|
@ -493,9 +493,9 @@ static int cifs_reopen_file(struct file *file, bool can_flush)
|
||||||
return -EBADF;
|
return -EBADF;
|
||||||
|
|
||||||
xid = GetXid();
|
xid = GetXid();
|
||||||
mutex_unlock(&pCifsFile->fh_mutex);
|
mutex_lock(&pCifsFile->fh_mutex);
|
||||||
if (!pCifsFile->invalidHandle) {
|
if (!pCifsFile->invalidHandle) {
|
||||||
mutex_lock(&pCifsFile->fh_mutex);
|
mutex_unlock(&pCifsFile->fh_mutex);
|
||||||
rc = 0;
|
rc = 0;
|
||||||
FreeXid(xid);
|
FreeXid(xid);
|
||||||
return rc;
|
return rc;
|
||||||
|
@ -527,7 +527,7 @@ static int cifs_reopen_file(struct file *file, bool can_flush)
|
||||||
if (full_path == NULL) {
|
if (full_path == NULL) {
|
||||||
rc = -ENOMEM;
|
rc = -ENOMEM;
|
||||||
reopen_error_exit:
|
reopen_error_exit:
|
||||||
mutex_lock(&pCifsFile->fh_mutex);
|
mutex_unlock(&pCifsFile->fh_mutex);
|
||||||
FreeXid(xid);
|
FreeXid(xid);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
@ -569,14 +569,14 @@ reopen_error_exit:
|
||||||
cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
|
cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
|
||||||
CIFS_MOUNT_MAP_SPECIAL_CHR);
|
CIFS_MOUNT_MAP_SPECIAL_CHR);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
mutex_lock(&pCifsFile->fh_mutex);
|
mutex_unlock(&pCifsFile->fh_mutex);
|
||||||
cFYI(1, ("cifs_open returned 0x%x", rc));
|
cFYI(1, ("cifs_open returned 0x%x", rc));
|
||||||
cFYI(1, ("oplock: %d", oplock));
|
cFYI(1, ("oplock: %d", oplock));
|
||||||
} else {
|
} else {
|
||||||
reopen_success:
|
reopen_success:
|
||||||
pCifsFile->netfid = netfid;
|
pCifsFile->netfid = netfid;
|
||||||
pCifsFile->invalidHandle = false;
|
pCifsFile->invalidHandle = false;
|
||||||
mutex_lock(&pCifsFile->fh_mutex);
|
mutex_unlock(&pCifsFile->fh_mutex);
|
||||||
pCifsInode = CIFS_I(inode);
|
pCifsInode = CIFS_I(inode);
|
||||||
if (pCifsInode) {
|
if (pCifsInode) {
|
||||||
if (can_flush) {
|
if (can_flush) {
|
||||||
|
|
Loading…
Reference in New Issue