commit:     ce587fbdb043f9ed6e28155265f2e2530d756a78
Author:     Alice Ferrazzi <alicef <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 15 08:56:36 2022 +0000
Commit:     Alice Ferrazzi <alicef <AT> gentoo <DOT> org>
CommitDate: Fri Jul 15 08:57:31 2022 +0000
URL:        https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=ce587fbd

Add 1950_workaround_negprot_bug.patch

Fix incompatibility with older samba server

Signed-off-by: Alice Ferrazzi <alicef <AT> gentoo.org>

 0000_README                       |  4 +++
 1950_workaround_negprot_bug.patch | 56 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 60 insertions(+)

diff --git a/0000_README b/0000_README
index be72894f..764c25c9 100644
--- a/0000_README
+++ b/0000_README
@@ -99,6 +99,10 @@ Patch:  1700_sparc-address-warray-bound-warnings.patch
 From:          https://github.com/KSPP/linux/issues/109
 Desc:          Address -Warray-bounds warnings 
 
+Patch:  1950_workaround_negprot_bug.patch 
+From:   
https://patchwork.kernel.org/project/cifs-client/patch/cah2r5mtun-yswt5vtbnpzj02fwihyoce2er8mcgrgre8qpk...@mail.gmail.com/
+Desc:   Fix mount fail to older Samba servers
+
 Patch:  2000_BT-Check-key-sizes-only-if-Secure-Simple-Pairing-enabled.patch
 From:   
https://lore.kernel.org/linux-bluetooth/20190522070540.48895-1-mar...@holtmann.org/raw
 Desc:   Bluetooth: Check key sizes only when Secure Simple Pairing is enabled. 
See bug #686758

diff --git a/1950_workaround_negprot_bug.patch 
b/1950_workaround_negprot_bug.patch
new file mode 100644
index 00000000..9a38ed83
--- /dev/null
+++ b/1950_workaround_negprot_bug.patch
@@ -0,0 +1,56 @@
+From a8d8532e4c335f0a31dd213abe4e31682f34647c Mon Sep 17 00:00:00 2001
+From: Steve French <stfre...@microsoft.com>
+Date: Tue, 12 Jul 2022 00:11:42 -0500
+Subject: [PATCH] smb3: workaround negprot bug in some Samba servers
+
+Mount can now fail to older Samba servers due to a server
+bug handling padding at the end of the last negotiate
+contexts (negotiate contexts typically round up to 8 byte
+lengths by adding padding if needed). This server bug can
+be avoided by switching the order of negotiate contexts,
+placing a negotiate context at the end that does not
+require padding (prior to the recent netname context fix
+this was the case on the client).
+
+Fixes: 73130a7b1ac9 ("smb3: fix empty netname context on secondary channels")
+Reported-by: Julian Sikorski <beleg...@gmail.com>
+Signed-off-by: Steve French <stfre...@microsoft.com>
+---
+ fs/cifs/smb2pdu.c | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c
+index 12b4dddaedb0..c705de32e225 100644
+--- a/fs/cifs/smb2pdu.c
++++ b/fs/cifs/smb2pdu.c
+@@ -571,10 +571,6 @@ assemble_neg_contexts(struct smb2_negotiate_req *req,
+       *total_len += ctxt_len;
+       pneg_ctxt += ctxt_len;
+ 
+-      build_posix_ctxt((struct smb2_posix_neg_context *)pneg_ctxt);
+-      *total_len += sizeof(struct smb2_posix_neg_context);
+-      pneg_ctxt += sizeof(struct smb2_posix_neg_context);
+-
+       /*
+        * secondary channels don't have the hostname field populated
+        * use the hostname field in the primary channel instead
+@@ -586,9 +582,14 @@ assemble_neg_contexts(struct smb2_negotiate_req *req,
+                                             hostname);
+               *total_len += ctxt_len;
+               pneg_ctxt += ctxt_len;
+-              neg_context_count = 4;
+-      } else /* second channels do not have a hostname */
+               neg_context_count = 3;
++      } else
++              neg_context_count = 2;
++
++      build_posix_ctxt((struct smb2_posix_neg_context *)pneg_ctxt);
++      *total_len += sizeof(struct smb2_posix_neg_context);
++      pneg_ctxt += sizeof(struct smb2_posix_neg_context);
++      neg_context_count++;
+ 
+       if (server->compress_algorithm) {
+               build_compression_ctxt((struct 
smb2_compression_capabilities_context *)
+-- 
+2.34.1
+

Reply via email to