Commit 32543b09681a for kernel

commit 32543b09681a142ff1803d87609060f491355346
Merge: dd7b15aeac80 78f739858464
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue Oct 20 16:16:00 2026 -1000

    Merge tag 'cifs-for-7.4' of https://git.manguebit.org/linux

    Pull smb client updates from Paulo Alcantara:

     - Implement ->fileattr_set so chattr(1) compression changes (chattr
       +c/-c) go through the generic VFS fileattr path and its permission
       and serialization checks instead of the raw FS_IOC_SETFLAGS fallback
       and remove the now-unreachable file flags ioctl handlers

     - Require stable pages when the connection is signed or SMB compression
       is enabled, so a buffered write can no longer modify a folio that is
       still in flight and corrupt its signature (surfaced as -EIO) or, with
       compression, silently corrupt the data stored on the server

     - Stop breaking a file's just-granted lease while probing it for a
       Minshall+French symlink, by reusing an already open handle or opening
       with the inode's lease key

     - Fix several out-of-bounds reads and use-after-free bug in SMB1

     - Fix an use-after-free bug in cifs_ses_add_channel()

     - Fix a NULL pointer dereference in the demultiplex thread when an
       encrypted read response matches no outstanding request and reclaim
       the credits granted on such responses to avoid starving the
       connection of credits

     - Fail sends fast when the connection needs to reconnect

     - Drop the redundant nls_table argument threaded through the session
       setup, tree connect and path-based call paths, allocate the session
       setup state on the stack and remove the internal CIFS version number
       along with a batch of write-only fields and commented-out code

    * tag 'cifs-for-7.4' of https://git.manguebit.org/linux: (61 commits)
      smb: client: reclaim credits for decrypted reads with no matching mid
      smb: client: do not pass a NULL buf to is_oplock_break()
      smb: client: require stable pages for SMB compression
      smb: client: allocate struct SMB2_sess_data on the stack
      smb: client: allocate struct sess_data on the stack
      smb: client: drop redundant nls_table arg from CIFSSMBRenameOpenFile()
      smb: client: drop redundant nls_table arg from SMBLegacyOpen()
      smb: client: drop redundant nls_table arg from CIFSPOSIXCreate()
      smb: client: drop redundant nls_table arg from CIFSPOSIXDelFile()
      smb: client: drop redundant nls_table arg from ->tree_connect()
      smb: client: drop redundant nls_table arg from cifs_setup_session()
      smb: client: drop redundant nls_table arg from ->sess_setup()
      smb: client: drop unused nls_table arg from decode_ascii_ssetup()
      smb: client: drop redundant nls_table arg from decode_unicode_ssetup()
      smb: client: drop unused nls_table arg from ascii_ssetup_strings()
      smb: client: drop redundant nls_table arg from unicode_ssetup_strings()
      smb: client: drop unused nls_table arg from ascii_domain_string()
      smb: client: drop redundant nls_table arg from unicode_domain_string()
      smb: client: drop unused nls_table arg from ascii_oslm_strings()
      smb: client: drop redundant nls_table arg from build_ntlmssp_auth_blob()
      ...

diff --cc fs/smb/client/transport.c
index 93ff6a4dbb35,cf11af490b0d..60699d2799fb
--- a/fs/smb/client/transport.c
+++ b/fs/smb/client/transport.c
@@@ -170,11 -171,26 +170,22 @@@ smb_send_kvec(struct TCP_Server_Info *s
  		 * after the retries we will kill the socket and
  		 * reconnect which may clear the network problem.
  		 *
 -		 * Even if regular signals are masked, EINTR might be
 -		 * propagated from sk_stream_wait_memory() to here when
 -		 * TIF_NOTIFY_SIGNAL is used for task work. For example,
 -		 * certain io_uring completions will use that. Treat
 -		 * having EINTR with pending task work the same as EAGAIN
 -		 * to avoid unnecessary reconnects.
 +		 * Task work must not abort the send, see signal_pending().
  		 */
 -		rc = sock_sendmsg(ssocket, smb_msg);
 +		scoped_guard(no_notify_signal)
 +			rc = sock_sendmsg(ssocket, smb_msg);
+
+ 		/*
+ 		 * If need to reconnect, blame it for any non-interrupt error
+ 		 * and bail out early, even if -EAGAIN;  reconnect will never
+ 		 * happen in parallel as cifs_reconnect() needs server mutex
+ 		 * (which we're already holding), so it's pointless to retry.
+ 		 */
+ 		if (unlikely(rc <= 0 && !is_interrupt_error(rc) &&
+ 			     READ_ONCE(server->tcpStatus) == CifsNeedReconnect))
+ 			return -ECONNRESET;
+
 -		if (rc == -EAGAIN || unlikely(rc == -EINTR && task_work_pending(current))) {
 +		if (rc == -EAGAIN) {
  			retries++;
  			if (retries >= 14 ||
  			    (!server->noblocksnd && (retries > 2))) {