cifs: call wake_up(&server->response_q) inside of cifs_reconnect()
authorStefan Metzmacher <metze@samba.org>
Mon, 24 Feb 2020 20:31:02 +0000 (14:31 -0600)
committerSteve French <stfrench@microsoft.com>
Mon, 23 Mar 2020 03:49:09 +0000 (22:49 -0500)
This means it's consistently called and the callers don't need to
care about it.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/cifssmb.c
fs/cifs/connect.c
fs/cifs/smb2ops.c

index 6e95ee69dd1871360c4221a0de0244608833a013..b173ff22560b26ec256f63bcaf7f3e686a5665c9 100644 (file)
@@ -1602,7 +1602,6 @@ cifs_readv_receive(struct TCP_Server_Info *server, struct mid_q_entry *mid)
        if (server->ops->is_session_expired &&
            server->ops->is_session_expired(buf)) {
                cifs_reconnect(server);
-               wake_up(&server->response_q);
                return -1;
        }
 
index e2196b36376569239b3a622f4f7d3b9b9e4f1bc9..f4d12b79ceed4b37c0eb85c72ce42226290b0269 100644 (file)
@@ -489,6 +489,7 @@ cifs_reconnect(struct TCP_Server_Info *server)
                dfs_cache_free_tgts(&tgt_list);
                cifs_put_tcp_super(sb);
 #endif
+               wake_up(&server->response_q);
                return rc;
        } else
                server->tcpStatus = CifsNeedReconnect;
@@ -623,6 +624,7 @@ cifs_reconnect(struct TCP_Server_Info *server)
        if (server->tcpStatus == CifsNeedNegotiate)
                mod_delayed_work(cifsiod_wq, &server->echo, 0);
 
+       wake_up(&server->response_q);
        return rc;
 }
 
@@ -717,7 +719,6 @@ server_unresponsive(struct TCP_Server_Info *server)
                cifs_server_dbg(VFS, "has not responded in %lu seconds. Reconnecting...\n",
                         (3 * server->echo_interval) / HZ);
                cifs_reconnect(server);
-               wake_up(&server->response_q);
                return true;
        }
 
@@ -850,7 +851,6 @@ is_smb_response(struct TCP_Server_Info *server, unsigned char type)
                 */
                cifs_set_port((struct sockaddr *)&server->dstaddr, CIFS_PORT);
                cifs_reconnect(server);
-               wake_up(&server->response_q);
                break;
        default:
                cifs_server_dbg(VFS, "RFC 1002 unknown response type 0x%x\n", type);
@@ -1022,7 +1022,6 @@ standard_receive3(struct TCP_Server_Info *server, struct mid_q_entry *mid)
                server->vals->header_preamble_size) {
                cifs_server_dbg(VFS, "SMB response too long (%u bytes)\n", pdu_length);
                cifs_reconnect(server);
-               wake_up(&server->response_q);
                return -ECONNABORTED;
        }
 
@@ -1070,7 +1069,6 @@ cifs_handle_standard(struct TCP_Server_Info *server, struct mid_q_entry *mid)
        if (server->ops->is_session_expired &&
            server->ops->is_session_expired(buf)) {
                cifs_reconnect(server);
-               wake_up(&server->response_q);
                return -1;
        }
 
@@ -1164,7 +1162,6 @@ next_pdu:
                        cifs_server_dbg(VFS, "SMB response too short (%u bytes)\n",
                                 server->pdu_size);
                        cifs_reconnect(server);
-                       wake_up(&server->response_q);
                        continue;
                }
 
index cfe9b800ea8c2e45ec5eff688a4da5ee181f694f..3a33f5d6b0ea844a8fc23466b75e5fcb2e596442 100644 (file)
@@ -4151,7 +4151,6 @@ handle_read_data(struct TCP_Server_Info *server, struct mid_q_entry *mid,
        if (server->ops->is_session_expired &&
            server->ops->is_session_expired(buf)) {
                cifs_reconnect(server);
-               wake_up(&server->response_q);
                return -1;
        }
 
@@ -4515,14 +4514,12 @@ smb3_receive_transform(struct TCP_Server_Info *server,
                cifs_server_dbg(VFS, "Transform message is too small (%u)\n",
                         pdu_length);
                cifs_reconnect(server);
-               wake_up(&server->response_q);
                return -ECONNABORTED;
        }
 
        if (pdu_length < orig_len + sizeof(struct smb2_transform_hdr)) {
                cifs_server_dbg(VFS, "Transform message is broken\n");
                cifs_reconnect(server);
-               wake_up(&server->response_q);
                return -ECONNABORTED;
        }