diff options
| -rw-r--r-- | fs/cifs/file.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/cifs/file.c b/fs/cifs/file.c index 96b7e9b7706d..74f12877493a 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c | |||
| @@ -366,6 +366,7 @@ void cifsFileInfo_put(struct cifsFileInfo *cifs_file) | |||
| 366 | struct cifsLockInfo *li, *tmp; | 366 | struct cifsLockInfo *li, *tmp; |
| 367 | struct cifs_fid fid; | 367 | struct cifs_fid fid; |
| 368 | struct cifs_pending_open open; | 368 | struct cifs_pending_open open; |
| 369 | bool oplock_break_cancelled; | ||
| 369 | 370 | ||
| 370 | spin_lock(&cifs_file_list_lock); | 371 | spin_lock(&cifs_file_list_lock); |
| 371 | if (--cifs_file->count > 0) { | 372 | if (--cifs_file->count > 0) { |
| @@ -397,7 +398,7 @@ void cifsFileInfo_put(struct cifsFileInfo *cifs_file) | |||
| 397 | } | 398 | } |
| 398 | spin_unlock(&cifs_file_list_lock); | 399 | spin_unlock(&cifs_file_list_lock); |
| 399 | 400 | ||
| 400 | cancel_work_sync(&cifs_file->oplock_break); | 401 | oplock_break_cancelled = cancel_work_sync(&cifs_file->oplock_break); |
| 401 | 402 | ||
| 402 | if (!tcon->need_reconnect && !cifs_file->invalidHandle) { | 403 | if (!tcon->need_reconnect && !cifs_file->invalidHandle) { |
| 403 | struct TCP_Server_Info *server = tcon->ses->server; | 404 | struct TCP_Server_Info *server = tcon->ses->server; |
| @@ -409,6 +410,9 @@ void cifsFileInfo_put(struct cifsFileInfo *cifs_file) | |||
| 409 | _free_xid(xid); | 410 | _free_xid(xid); |
| 410 | } | 411 | } |
| 411 | 412 | ||
| 413 | if (oplock_break_cancelled) | ||
| 414 | cifs_done_oplock_break(cifsi); | ||
| 415 | |||
| 412 | cifs_del_pending_open(&open); | 416 | cifs_del_pending_open(&open); |
| 413 | 417 | ||
| 414 | /* | 418 | /* |
