From: Pavel Shilovsky <piastryyy@gmail.com>
Date: Tue, 5 Mar 2019 15:51:56 -0800
Subject: [PATCH] CIFS: Return -EAGAIN instead of -ENOTSOCK
Git-commit: afc18a6f7b849a4935f3b4d782c902749b1580fd
Patch-mainline: v5.1-rc1
References: bsc#1144333
When we attempt to send a packet while the demultiplex thread
is in the middle of cifs_reconnect() we may end up returning
-ENOTSOCK to upper layers. The intent here is to retry the request
once the TCP connection is up, so change it to return -EAGAIN
instead. The latter error code is retryable and the upper layers
will retry the request if needed.
Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Acked-by: Aurelien Aptel <aaptel@suse.com>
---
fs/cifs/transport.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c
index 9c3a6809194c..9f23a4556131 100644
--- a/fs/cifs/transport.c
+++ b/fs/cifs/transport.c
@@ -301,8 +301,9 @@ __smb_send_rqst(struct TCP_Server_Info *server, int num_rqst,
rc = smbd_send(server, rqst);
goto smbd_done;
}
+
if (ssocket == NULL)
- return -ENOTSOCK;
+ return -EAGAIN;
/* cork the socket */
kernel_setsockopt(ssocket, SOL_TCP, TCP_CORK,
--
2.16.4