]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 29 Nov 2021 13:32:39 +0000 (14:32 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 29 Nov 2021 13:32:39 +0000 (14:32 +0100)
added patches:
cifs-nosharesock-should-be-set-on-new-server.patch

queue-5.15/cifs-nosharesock-should-be-set-on-new-server.patch [new file with mode: 0644]
queue-5.15/series

diff --git a/queue-5.15/cifs-nosharesock-should-be-set-on-new-server.patch b/queue-5.15/cifs-nosharesock-should-be-set-on-new-server.patch
new file mode 100644 (file)
index 0000000..3332235
--- /dev/null
@@ -0,0 +1,48 @@
+From b9ad6b5b687e798746024e5fc4574d8fa8bdfade Mon Sep 17 00:00:00 2001
+From: Shyam Prasad N <sprasad@microsoft.com>
+Date: Sun, 21 Nov 2021 16:45:44 +0000
+Subject: cifs: nosharesock should be set on new server
+
+From: Shyam Prasad N <sprasad@microsoft.com>
+
+commit b9ad6b5b687e798746024e5fc4574d8fa8bdfade upstream.
+
+Recent fix to maintain a nosharesock state on the
+server struct caused a regression. It updated this
+field in the old tcp session, and not the new one.
+
+This caused the multichannel scenario to misbehave.
+
+Fixes: c9f1c19cf7c5 (cifs: nosharesock should not share socket with future sessions)
+Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
+Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
+Signed-off-by: Steve French <stfrench@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/cifs/connect.c |    7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+--- a/fs/cifs/connect.c
++++ b/fs/cifs/connect.c
+@@ -1217,10 +1217,8 @@ static int match_server(struct TCP_Serve
+ {
+       struct sockaddr *addr = (struct sockaddr *)&ctx->dstaddr;
+-      if (ctx->nosharesock) {
+-              server->nosharesock = true;
++      if (ctx->nosharesock)
+               return 0;
+-      }
+       /* this server does not share socket */
+       if (server->nosharesock)
+@@ -1376,6 +1374,9 @@ cifs_get_tcp_session(struct smb3_fs_cont
+               goto out_err;
+       }
++      if (ctx->nosharesock)
++              tcp_ses->nosharesock = true;
++
+       tcp_ses->ops = ctx->ops;
+       tcp_ses->vals = ctx->vals;
+       cifs_set_net_ns(tcp_ses, get_net(current->nsproxy->net_ns));
index ba3507bc7f720ce7aa962f6981dac5a6e328d991..48d9752ae406d527718b9d4d69cb0652715ec383 100644 (file)
@@ -168,3 +168,4 @@ vdpa_sim-avoid-putting-an-uninitialized-iova_domain.patch
 vhost-vsock-fix-incorrect-used-length-reported-to-the-guest.patch
 ksmbd-fix-an-error-handling-path-in-smb2_sess_setup.patch
 tracing-check-pid-filtering-when-creating-events.patch
+cifs-nosharesock-should-be-set-on-new-server.patch