[Pull Request][Jammy linux-azure] Azure: Update cifs to Linux v6.5

Joseph Salisbury joseph.salisbury at canonical.com
Thu Oct 5 14:37:51 UTC 2023


This is a large pull request, so reviewing every line of code would be 
very time consuming.  However, a high level review of the patches looks 
good.

Since this has been testing by Microsoft and it is specific to the Azure 
kernel:

Acked-by: Joseph Salisbury <joseph.salisbury at canonical.com>


On 9/18/23 15:47, Tim Gardner wrote:
> BugLink: https://bugs.launchpad.net/bugs/2036450
>
> SRU Justification
>
> [Impact]
>
> Microsoft has requested this patch set to update CIFS and smbfs to the 
> Linux kernel version 6.5.
>
> This pull request is hideously large, partly because in order to match 
> sources with what MSFT has backported I ended up reverting all changes 
> to the fs/cifs and fs/smbfs directories since the v5.15 release. This 
> is due to an earlier backport plus some stable updates. It just seemed 
> simpler to start with a clean slate before applying the backport 
> patches The end result is identical cifs and smbfs sources between 
> Ubuntu Azure and [1].
>
> All patches are clean cherry picks from Steve French's repository, 
> which in turn are cherry picks and backports from mainline. There is 
> no discussion in those patches as to which are backports and which are 
> clean cherry picks.
>
> [1] - git://git.samba.org/sfrench/cifs-2.6.git 5.15-backport-8-16-23
>
> [Test Plan]
>
> Microsoft has tested with positive results.
>
> [Regression Potential]
>
> This is a huge patch set. The potential exists for corruption, 
> connection instabilities, or other cifs related maladies.
>
> [Other Info]
>
> SF: #00365185
> ----------------------------------------------------------------
> The following changes since commit 
> e485c2884527c97b3a2f62e767d685f7c82d93c5:
>
>   UBUNTU: Ubuntu-azure-5.15.0-1048.55 (2023-09-11 10:57:25 -0600)
>
> are available in the Git repository at:
>
> git://git.launchpad.net/~timg-tpi/ubuntu/+source/linux/+git/jammy 
> 5.15-backport-8-16-23
>
> for you to fetch changes up to c299676859266bea6b237350fc974bd391bfdcf5:
>
>   smb: client: fix null auth (2023-09-18 13:29:29 -0600)
>
> ----------------------------------------------------------------
> Amir Goldstein (1):
>       cifs: fix set of group SID via NTSD xattrs
>
> Anastasia Belova (2):
>       cifs: add check for returning value of SMB2_close_init
>       cifs: add check for returning value of SMB2_set_info_init
>
> Andy Shevchenko (1):
>       cifs: Get rid of unneeded conditional in the smb2_get_aead_req()
>
> Bharath SM (5):
>       SMB3: fix lease break timeout when multiple deferred close 
> handles for the same file.
>       SMB3: Add missing locks to protect deferred close file list
>       SMB3: Close deferred file handles in case of handle lease break
>       SMB3: Close all deferred handles of inode in case of handle 
> lease break
>       SMB3: drop reference to cfile before sending oplock break
>
> ChenXiaoSong (2):
>       cifs: return the more nuanced writeback error on close()
>       cifs: fix missing unlock in cifs_file_copychunk_range()
>
> Christophe JAILLET (1):
>       cifs: Use kstrtobool() instead of strtobool()
>
> Colin Ian King (3):
>       cifs: remove redundant assignment to pointer p
>       cifs: remove redundant initialization to variable mnt_sign_enabled
>       cifs: remove redundant assignment to the variable match
>
> Dan Carpenter (2):
>       cifs: Use after free in debug code
>       cifs: double lock in cifs_reconnect_tcon()
>
> David Disseldorp (2):
>       cifs: fix DFS traversal oops without CONFIG_CIFS_DFS_UPCALL
>       cifs: fix negotiate context parsing
>
> David Howells (9):
>       Fix a warning about a malformed kernel doc comment in cifs
>       cifs: Check the IOCB_DIRECT flag, not O_DIRECT
>       cifs: Split the smb3_add_credits tracepoint
>       smb3: missing inode locks in zero range
>       smb3: missing inode locks in punch hole
>       smb3: Move the flush out of smb2_copychunk_range() into its callers
>       smb3: fix temporary data corruption in insert range
>       cifs: Fix oops due to uncleared server->smbd_conn in reconnect
>       cifs: Add a function to read into an iter from a socket
>
> Enzo Matsumiya (16):
>       cifs: fix hang on cifs_get_next_mid()
>       cifs: don't call cifs_dfs_query_info_nonascii_quirk() if nodfs 
> was set
>       cifs: return ENOENT for DFS lookup_cache_entry()
>       cifs: print TIDs as hex
>       cifs: remove repeated debug message on cifs_put_smb_ses()
>       smb2: small refactor in smb2_check_message()
>       cifs: list_for_each() -> list_for_each_entry()
>       cifs: remove useless DeleteMidQEntry()
>       cifs: remove unused server parameter from calc_smb_size()
>       cifs: remove useless parameter 'is_fsctl' from SMB2_ioctl()
>       cifs: fix small mempool leak in SMB2_negotiate()
>       cifs: return correct error in ->calc_signature()
>       smb3: rename encryption/decryption TFMs
>       cifs: secmech: use shash_desc directly, remove sdesc
>       cifs: use ALIGN() and round_up() macros
>       cifs: do not include page data when checking signature
>
> Eugene Korenevsky (3):
>       cifs: fix FILE_BOTH_DIRECTORY_INFO definition
>       cifs: alloc_path_with_tree_prefix: do not append sep. if the 
> path is empty
>       cifs: quirk for STATUS_OBJECT_NAME_INVALID returned for 
> non-ASCII dfs refs
>
> Gustavo A. R. Silva (3):
>       treewide: Replace zero-length arrays with flexible-array members
>       cifs: Replace a couple of one-element arrays with flexible-array 
> members
>       cifs: Replace zero-length arrays with flexible-array members
>
> Haowen Bai (1):
>       cifs: Use kzalloc instead of kmalloc/memset
>
> Harshit Mogalapalli (1):
>       cifs: potential buffer overflow in handling symlinks
>
> Ira Weiny (1):
>       cifs: Fix kmap_local_page() unmapping
>
> Jakob Koschel (1):
>       cifs: remove check of list iterator against head past the loop body
>
> Jeff Layton (1):
>       cifs: move superblock magic defitions to magic.h
>
> Jiangshan Yi (1):
>       cifs: misc: fix spelling typo in comment
>
> Julia Lawall (1):
>       cifs: smbd: fix typo in comment
>
> Kees Cook (4):
>       cred: Do not default to init_cred in prepare_kernel_cred()
>      cifs: Convert struct fealist away from 1-element array
>       cifs: Replace remaining 1-element arrays
>       smb3: Replace smb2pdu 1-element arrays with flex-arrays
>
> Muhammad Usama Anjum (2):
>       cifs: remove unused variable ses_selected
>       cifs: remove initialization value
>
> Namjae Jeon (1):
>       cifs: remove unneeded 2bytes of padding from smb2 tree connect
>
> Paulo Alcantara (92):
>       cifs: fix print of hdr_flags in dfscache_proc_show()
>       cifs: introduce new helper for cifs_reconnect()
>       cifs: convert list_for_each to entry variant
>       cifs: split out dfs code from cifs_reconnect()
>       cifs: set a minimum of 120s for next dns resolution
>       cifs: support nested dfs links over reconnect
>       cifs: fix memory leak of smb3_fs_context_dup::server_hostname
>       cifs: fix potential use-after-free bugs
>       cifs: introduce cifs_ses_mark_for_reconnect() helper
>       cifs: fix missed refcounting of ipc tcon
>       cifs: fix ntlmssp auth when there is no key exchange
>       cifs: do not skip link targets when an I/O fails
>       cifs: fix bad fids sent over wire
>       cifs: prevent bad output lengths in smb2_ioctl_query_info()
>       cifs: fix NULL ptr dereference in smb2_ioctl_query_info()
>       cifs: fix potential race with cifsd thread
>       cifs: force new session setup and tcon for dfs
>       cifs: fix NULL ptr dereference in refresh_mounts()
>       cifs: use correct lock type in cifs_reconnect()
>       cifs: fix signed integer overflow when fl_end is OFFSET_MAX
>       cifs: fix ntlmssp on old servers
>       cifs: skip trailing separators of prefix paths
>       cifs: fix reconnect on smb3 mount types
>       cifs: update cifs_ses::ip_addr after failover
>       cifs: fix lock length calculation
>       cifs: skip extra NULL byte in filenames
>       cifs: add missing spinlock around tcon refcount
>       cifs: improve symlink handling for smb2+
>       cifs: fix uninitialised var in smb2_compound_op()
>       cifs: prevent copying past input buffer boundaries
>       cifs: fix static checker warning
>       cifs: fix double-fault crash during ntlmssp
>       cifs: fix memory leaks in session setup
>       cifs: skip alloc when request has no pages
>       cifs: fix oops during encryption
>       cifs: set correct tcon status after initial tree connect
>       cifs: set correct ipc status after initial tree connect
>       cifs: reduce roundtrips on create/qinfo requests
>       cifs: use fs_context for automounts
>       cifs: get rid of mount options string parsing
>       cifs: remove unused smb3_fs_context::mount_options
>       cifs: set resolved ip in sockaddr
>       cifs: share dfs connections and supers
>       cifs: don't refresh cached referrals from unactive mounts
>       cifs: fix refresh of cached referrals
>       cifs: refresh root referrals
>       cifs: don't block in dfs_cache_noreq_update_tgthint()
>       cifs: fix confusing debug message
>       cifs: fix source pathname comparison of dfs supers
>       cifs: optimize reconnect of nested links
>       cifs: set correct status of tcon ipc when reconnecting
>       cifs: use origin fullpath for automounts
>       cifs: don't leak -ENOMEM in smb2_open_file()
>       cifs: ignore ipc reconnect failures during dfs failover
>       cifs: fix race in assemble_neg_contexts()
>       cifs: protect access of TCP_Server_Info::{dstaddr,hostname}
>       cifs: fix file info setting in cifs_query_path_info()
>       cifs: fix file info setting in cifs_open_file()
>       cifs: fix double free on failed kerberos auth
>       cifs: do not query ifaces on smb1 mounts
>       cifs: fix potential memory leaks in session setup
>       cifs: fix potential deadlock in cache_refresh_path()
>       cifs: avoid re-lookups in dfs_cache_find()
>       cifs: don't take exclusive lock for updating target hints
>       cifs: remove duplicate code in __refresh_tcon()
>       cifs: handle cache lookup errors different than -ENOENT
>       cifs: fix return of uninitialized rc in dfs_cache_update_tgthint()
>       cifs: remove unused function
>       cifs: prevent data race in smb2_reconnect()
>       cifs: get rid of unneeded conditional in cifs_get_num_sgs()
>       cifs: fix mount on old smb servers
>       cifs: get rid of dns resolve worker
>       cifs: improve checking of DFS links over STATUS_OBJECT_NAME_INVALID
>       cifs: prevent data race in cifs_reconnect_tcon()
>       cifs: set DFS root session in cifs_get_smb_ses()
>       cifs: fix use-after-free bug in refresh_cache_worker()
>       cifs: return DFS root session id in DebugData
>       cifs: use DFS root session instead of tcon ses
>       cifs: fix missing unload_nls() in smb2_reconnect()
>       cifs: fix dentry lookups in directory handle cache
>       cifs: avoid races in parallel reconnects in smb1
>       cifs: prevent infinite recursion in CIFSGetDFSRefer()
>       cifs: get rid of dead check in smb2_reconnect()
>       cifs: avoid dup prefix path in dfs_get_automount_devname()
>       cifs: protect session status check in smb2_reconnect()
>       cifs: print smb3_fs_context::source when mounting
>       cifs: fix potential use-after-free bugs in 
> TCP_Server_Info::hostname
>       cifs: fix potential race when tree connecting ipc
>       cifs: protect access of TCP_Server_Info::{origin,leaf}_fullpath
>       cifs: avoid potential races when handling multiple dfs tcons
>       cifs: fix sharing of DFS connections
>       cifs: fix smb1 mount regression
>
> Pawel Witek (1):
>       cifs: fix pcchunk length type in smb2_copychunk_range
>
> Ronnie Sahlberg (35):
>       cifs: Create a new shared file holding smb2 pdu definitions
>       cifs: move NEGOTIATE_PROTOCOL definitions out into the common area
>       cifs: Move more definitions into the shared area
>      cifs: Move more definitions into the shared area
>       cifs: Move SMB2_Create definitions to the shared area
>       cifs: serialize all mount attempts
>       cifs: do not use uninitialized data in the owner/group sid
>       cifs: fix double free race when mount fails in cifs_get_root()
>       cifs: modefromsids must add an ACE for authenticated users
>       cifs: fix handlecache and multiuser
>       cifs: truncate the inode and mapping when we simulate fcollapse
>       cifs: we do not need a spinlock around the tree access during 
> umount
>       cifs: convert the path to utf16 in smb2_query_info_compound
>       cifs: change smb2_query_info_compound to use a cached fid, if 
> available
>       cifs: verify that tcon is valid before dereference in cifs_kill_sb
>       cifs: destage any unwritten data to the server before calling 
> copychunk_write
>       cifs: move definition of cifs_fattr earlier in cifsglob.h
>       cifs: check for smb1 in open_cached_dir()
>       cifs: set the CREATE_NOT_FILE when opening the directory in 
> use_cached_dir()
>       cifs: cache the dirents for entries in a cached directory
>       cifs: fix potential double free during failed mount
>       cifs: when extending a file with falloc we should make files 
> not-sparse
>       cifs: Do not use tcon->cfid directly, use the cfid we get from 
> open_cached_dir
>       cifs: Do not access tcon->cfids->cfid directly from 
> is_path_accessible
>       cifs: revalidate mapping when doing direct writes
>       cifs: destage dirty pages before re-reading them for cache=none
>       cifs: improve handlecaching
>       cifs: store a pointer to a fid in the cfid structure instead of 
> the struct
>       cifs: fix skipping to incorrect offset in emit_cached_dirents
>       cifs: fix regression in very old smb1 mounts
>       cifs: enable caching of directories for which a lease is held
>       cifs: find and use the dentry for cached non-root directories also
>       cifs: set rc to -ENOENT if we can not get a dentry for the 
> cached dir
>       cifs: drop the lease for cached directories on rmdir or rename
>       cifs: Check the lease context if we actually got a lease
>       cifs: return a single-use cfid if we did not get a lease
>
> Ryan Bair (1):
>       cifs: fix workstation_name for multiuser mounts
>
> Shyam Prasad N (70):
>       cifs: To match file servers, make sure the server hostname matches
>       cifs: nosharesock should not share socket with future sessions
>       cifs: send workstation name during ntlmssp session setup
>       cifs: for compound requests, use open handle if possible
>       cifs: do not negotiate session if session already exists
>       cifs: protect session channel fields with chan_lock
>       cifs: connect individual channel servers to primary channel server
>       cifs: do not duplicate fscache cookie for secondary channels
>       cifs: nosharesock should be set on new server
>       cifs: populate server_hostname for extra channels
>       cifs: wait for tcon resource_id before getting fscache super
>       cifs: add server conn_id to fscache client cookie
>       cifs: avoid use of dstaddr as key for fscache client cookie
>       cifs: ignore resource_id while getting fscache super cookie
>       cifs: track individual channel status using chans_need_reconnect
>       cifs: use the chans_need_reconnect bitmap for reconnect status
>       cifs: adjust DebugData to use chans_need_reconnect for conn status
>       cifs: add WARN_ON for when chan_count goes below minimum
>       cifs: reconnect only the connection and not smb session where 
> possible
>       cifs: take cifs_tcp_ses_lock for status checks
>       cifs: maintain a state machine for tcp/smb/tcon sessions
>       cifs: avoid race during socket reconnect between send and recv
>       cifs: free ntlmsspblob allocated in negotiate
>       cifs: check reconnects for channels of active tcons too
>       cifs: fix the connection state transitions with multichannel
>       cifs: protect all accesses to chan_* with chan_lock
>       cifs: fix the cifs_reconnect path for DFS
>       cifs: remove repeated state change in dfs tree connect
>       cifs: make status checks in version independent callers
>       cifs: update tcpStatus during negotiate and sess setup
>       cifs: cifs_ses_mark_for_reconnect should also update reconnect bits
>       cifs: unlock chan_lock before calling cifs_put_tcp_session
>       cifs: call cifs_reconnect when a connection is marked
>       cifs: call helper functions for marking channels for reconnect
>       cifs: mark sessions for reconnection in helper function
>       cifs: use a different reconnect helper for non-cifsd threads
>       cifs: release cached dentries only if mount is complete
>       cifs: do not use tcpStatus after negotiate completes
>       cifs: use new enum for ses_status
>       cifs: avoid parallel session setups on same channel
>       cifs: return errors during session setup during reconnects
>       cifs: populate empty hostnames for extra channels
>       cifs: when a channel is not found for server, log its connection id
>       smb3: use netname when available on secondary channels
>       cifs: change iface_list from array to sorted linked list
>       cifs: during reconnect, update interface if necessary
>       cifs: periodically query network interfaces from server
>       cifs: avoid deadlocks while updating iface
>       cifs: fix race condition with delayed threads
>       cifs: remove unnecessary locking of chan_lock while freeing session
>       cifs: avoid use of global locks for high contention data
>       cifs: always iterate smb sessions using primary channel
>       cifs: avoid unnecessary iteration of tcp sessions
>       cifs: refcount only the selected iface during interface update
>       cifs: fix interface count calculation during refresh
>       cifs: print last update time for interface list
>       cifs: use the least loaded channel for sending requests
>       cifs: use tcon allocation functions even for dummy tcon
>       cifs: update ip_addr for ses only for primary chan setup
>       cifs: match even the scope id for ipv6 addresses
>       cifs: reuse cifs_match_ipaddr for comparison of dstaddr too
>       cifs: generate signkey for the channel that's reconnecting
>       cifs: check only tcon status on tcon related functions
>       cifs: lock chan_lock outside match_session
>       cifs: do not poll server interfaces too regularly
>       cifs: empty interface list when server doesn't support query 
> interfaces
>       cifs: dump pending mids for all channels in DebugData
>       cifs: print session id while listing open files
>       cifs: append path to open_enter trace event
>       cifs: avoid race conditions with parallel reconnects
>
> Stefan Metzmacher (5):
>       cifs: don't send down the destination address to sendmsg for a 
> SOCK_STREAM
>       cifs: always initialize struct msghdr smb_msg completely
>      cifs: introduce cifs_io_parms in smb2_async_writev()
>       cifs: split out smb3_use_rdma_offload() helper
>       cifs: don't try to use rdma offload on encrypted connections
>
> Steve French (143):
>       cifs: add mount parameter tcpnodelay
>       smb3: add dynamic trace points for socket connection
>       smb3: do not error on fsync when readonly
>       smb3: remove trivial dfs compile warning
>       smb3: add additional null check in SMB2_ioctl
>       smb3: add additional null check in SMB2_open
>       smb3: add additional null check in SMB2_tcon
>       cifs: release lock earlier in dequeue_mid error case
>       smb3: add additional null check in SMB311_posix_mkdir
>       smb3: do not setup the fscache_super_cookie until fsinfo 
> initialized
>       cifs: move debug print out of spinlock
>       cifs: protect srv_count with cifs_tcp_ses_lock
>       smb2: clarify rc initialization in smb2_reconnect
>       cifs: update internal version number
>       smb3: add new defines from protocol specification
>       smb3: send NTLMSSP version information
>       cifs: update internal module number
>       improve error message when mount options conflict with posix
>       smb3: fix snapshot mount option
>       cifs: fix confusing unneeded warning message on smb2.1 and earlier
>       smb3: fix incorrect session setup check for multiuser mounts
>       Adjust cifssb maximum read size
>       move more common protocol header definitions to smbfs_common
>       smb3: move defines for ioctl protocol header and SMB2 sizes to 
> smbfs_common
>       smb3: move defines for query info and query fsinfo to smbfs_common
>       smb3: cleanup and clarify status of tree connections
>       smb3: fix ksmbd bigendian bug in oplock break, and move its 
> struct to smbfs_common
>       cifs: update internal module number
>       SMB3: EBADF/EIO errors in rename/open caused by race condition 
> in smb2_compound_op
>       smb3: add trace point for lease not found issue
>       smb3: add trace point for oplock not found
>       Add defines for various newer FSCTLs
>       Add various fsctl structs
>       cifs: fix minor compile warning
>       smb3: check for null tcon
>       smb3: don't set rc when used and unneeded in query_info_compound
>       smb3: add mount parm nosparse
>       smb3: remove unneeded null check in cifs_readdir
>       cifs: do not build smb1ops if legacy support is disabled
>       cifs: version operations for smb20 unneeded when legacy support 
> disabled
>       cifs: update internal module number
>       cifs: fix uninitialized pointer in error case in 
> dfs_cache_get_tgt_share
>       smb3: add trace point for SMB2_set_eof
>       smb3: fix empty netname context on secondary channels
>       smb3: workaround negprot bug in some Samba servers
>       smb3: check xattr value length earlier
>       cifs: remove some camelCase and also some static build warnings
>       cifs: remove minor build warning
>       cifs: remove remaining build warnings
>       cifs: when insecure legacy is disabled shrink amount of SMB1 code
>       cifs: remove "cifs_" prefix from init/destroy mids functions
>       cifs: alloc_mid function should be marked as static
>       cifs: update internal module number
>       cifs: Move cached-dir functions into a separate file
>       smb3: allow deferred close timeout to be configurable
>       cifs: Add constructor/destructors for tcon->cfid
>       smb3: fix temporary data corruption in collapse range
>       smb3: use filemap_write_and_wait_range instead of 
> filemap_write_and_wait
>       cifs: update internal module number
>       smb3: add dynamic trace points for tree disconnect
>       cifs: Make tcon contain a wrapper structure cached_fids instead 
> of cached_fid
>       smb3: define missing create contexts
>       smb3: do not log confusing message when server returns no 
> network interfaces
>       cifs: replace kfree() with kfree_sensitive() for sensitive data
>       smb3: fix oops in calculating shash_setkey
>       smb3: clarify multichannel warning
>       smb3: must initialize two ACL struct fields to zero
>       cifs: lease key is uninitialized in smb1 paths
>       cifs: lease key is uninitialized in two additional functions 
> when smb1
>       smb3: improve SMB3 change notification support
>       smb3: interface count displayed incorrectly
>       cifs: update internal module number
>       cifs: fix use-after-free on the link name
>       cifs: minor cleanup of some headers
>       cifs: fix various whitespace errors in headers
>       cifs: fix missing display of three mount options
>       cifs: print warning when conflicting soft vs. hard mount options 
> specified
>       cifs: split out ses and tcon retrieval from mount_get_conns()
>       cifs: update internal module number
>       cifs: update Kconfig description
>       cifs: fix indentation in make menuconfig options
>       update internal module version number for cifs.ko
>       smb3: lower default deferred close timeout to address perf 
> regression
>       smb3: fix unusable share after force unmount failure
>       cifs: missing lock when updating session status
>       SMB3.1.1: add new tree connect ShareFlags
>       smb3: make query_on_disk_id open context consistent and move to 
> common code
>       smb3: move some common open context structs to smbfs_common
>       cifs: update internal module version number for cifs.ko
>       SMB3.1.1: correct definition for app_instance_id create contexts
>       do not reuse connection if share marked as isolated
>       smb3: improve parallel reads of large files
>       SMB3: force unmount was failing to close deferred close files
>       smb3: fix problem remounting a share after shutdown
>       cifs: release leases for deferred close handles when freezing
>       smb3: display debug information better for encryption
>       cifs: mapchars mount option ignored
>       smb3: missing null check in SMB2_change_notify
>       smb: delete an unnecessary statement
>       cifs: address unused variable warning
>       smb: remove obsolete comment
>       cifs: fix status checks in cifs_tree_connect
>       cifs: print all credit counters in DebugData
>       smb/client: print "Unknown" instead of bogus link speed value
>       cifs: fix sockaddr comparison in iface_cmp
>       cifs: fix max_credits implementation
>       cifs: fix lease break oops in xfstest generic/098
>       cifs: add a warning when the in-flight count goes negative
>       SMB3: Do not send lease break acknowledgment if all file handles 
> have been closed
>       cifs: print nosharesock value while dumping mount options
>       smb: client: fix warning in cifs_match_super()
>       smb: client: fix warning in cifs_smb3_do_mount()
>       cifs: print more detail when invalidate_inode_mapping fails
>       smb3: do not reserve too many oplock credits
>       smb: client: fix warning in CIFSFindFirst()
>       smb: client: fix warning in CIFSFindNext()
>       smb: client: fix warning in generic_ip_connect()
>       cifs: prevent use-after-free by freeing the cfile later
>       cifs: do all necessary checks for credits within or before locking
>       cifs: fix session state check in reconnect to avoid 
> use-after-free issue
>       cifs: fix session state check in smb2_find_smb_ses
>       cifs: print client_guid in DebugData
>       smb: client: fix broken file attrs with nodfs mounts
>       smb: client: fix parsing of source mount option
>       smb: client: fix shared DFS root mounts with different prefixes
>       smb: client: improve DFS mount check
>       cifs: log session id when a matching ses is not found
>       cifs: new dynamic tracepoint to track ses not found errors
>       cifs: fix session state transition to avoid use-after-free issue
>       smb: client: remove redundant pointer 'server'
>       cifs: if deferred close is disabled then close files immediately
>       smb: client: Fix -Wstringop-overflow issues
>       smb: client: fix missed ses refcounting
>       cifs: fix mid leak during reconnection after timeout threshold
>       cifs: update internal module version number for cifs.ko
>       cifs: allow dumping keys for directories too
>       smb3: do not set NTLMSSP_VERSION flag for negotiate not auth 
> request
>       cifs: add missing return value check for cifs_sb_tlink
>       smb: client: fix dfs link mount against w2k8
>       cifs: fix potential oops in cifs_oplock_break
>       cifs: Release folio lock on fscache read hit.
>       smb3: display network namespace in debug information
>       smb: client: fix null auth
>
> Thiago Rafael Becker (2):
>       cifs: sanitize multiple delimiters in prepath
>       cifs: sanitize paths in cifs_update_super_prepath.
>
> Tim Gardner (232):
>       Revert "UBUNTU: SAUCE: Fix cifs: fix mid leak during 
> reconnection after timeout threshold"
>       Revert "smb3: lower default deferred close timeout to address 
> perf regression"
>       Revert "smb3: allow deferred close timeout to be configurable"
>       Revert "cifs: remove minor build warning"
>       Revert "cifs: remove some camelCase and also some static build 
> warnings"
>       Revert "cifs: remove unnecessary (void*) conversions."
>       Revert "cifs: remove unnecessary type castings"
>       Revert "cifs: remove redundant initialization to variable 
> mnt_sign_enabled"
>       Revert "smb3: workaround negprot bug in some Samba servers"
>       Revert "cifs: remove unnecessary locking of chan_lock while 
> freeing session"
>       Revert "cifs: fix race condition with delayed threads"
>       Revert "cifs: update cifs_ses::ip_addr after failover"
>       Revert "cifs: avoid deadlocks while updating iface"
>       Revert "cifs: periodically query network interfaces from server"
>       Revert "cifs: during reconnect, update interface if necessary"
>       Revert "cifs: change iface_list from array to sorted linked list"
>       Revert "smb3: use netname when available on secondary channels"
>       Revert "smb3: fix empty netname context on secondary channels"
>       Revert "cifs: when a channel is not found for server, log its 
> connection id"
>       Revert "smb3: add trace point for SMB2_set_eof"
>       Revert "cifs: populate empty hostnames for extra channels"
>       Revert "cifs: fix uninitialized pointer in error case in 
> dfs_cache_get_tgt_share"
>       Revert "cifs: skip trailing separators of prefix paths"
>       Revert "cifs: update internal module number"
>       Revert "cifs: do not build smb1ops if legacy support is disabled"
>       Revert "cifs: fix potential deadlock in direct reclaim"
>       Revert "cifs: remove repeated debug message on cifs_put_smb_ses()"
>       Revert "smb3: remove unneeded null check in cifs_readdir"
>       Revert "cifs: fix ntlmssp on old servers"
>       Revert "cifs: cache the dirents for entries in a cached directory"
>       Revert "cifs: avoid parallel session setups on same channel"
>       Revert "cifs: use new enum for ses_status"
>       Revert "cifs: do not use tcpStatus after negotiate completes"
>       Revert "smb3: add mount parm nosparse"
>       Revert "smb3: don't set rc when used and unneeded in 
> query_info_compound"
>       Revert "cifs: fix minor compile warning"
>       Revert "Add various fsctl structs"
>       Revert "Add defines for various newer FSCTLs"
>       Revert "smb3: add trace point for oplock not found"
>       Revert "cifs: return the more nuanced writeback error on close()"
>       Revert "smb3: add trace point for lease not found issue"
>       Revert "cifs: smbd: fix typo in comment"
>       Revert "cifs: set the CREATE_NOT_FILE when opening the directory 
> in use_cached_dir()"
>       Revert "cifs: check for smb1 in open_cached_dir()"
>       Revert "cifs: move definition of cifs_fattr earlier in cifsglob.h"
>       Revert "cifs: print TIDs as hex"
>       Revert "cifs: return ENOENT for DFS lookup_cache_entry()"
>       Revert "cifs: don't call cifs_dfs_query_info_nonascii_quirk() if 
> nodfs was set"
>       Revert "cifs: fix signed integer overflow when fl_end is 
> OFFSET_MAX"
>       Revert "cifs: use correct lock type in cifs_reconnect()"
>       Revert "cifs: fix NULL ptr dereference in refresh_mounts()"
>       Revert "cifs: Use kzalloc instead of kmalloc/memset"
>       Revert "cifs: Split the smb3_add_credits tracepoint"
>       Revert "cifs: update internal module number"
>       Revert "cifs: force new session setup and tcon for dfs"
>       Revert "cifs: remove check of list iterator against head past 
> the loop body"
>       Revert "cifs: fix potential race with cifsd thread"
>       Revert "fs: Remove ->readpages address space operation"
>       Revert "smb3: fix ksmbd bigendian bug in oplock break, and move 
> its struct to smbfs_common"
>       Revert "smb3: cleanup and clarify status of tree connections"
>       Revert "smb3: move defines for query info and query fsinfo to 
> smbfs_common"
>       Revert "smb3: move defines for ioctl protocol header and SMB2 
> sizes to smbfs_common"
>       Revert "move more common protocol header definitions to 
> smbfs_common"
>       Revert "cifs: fix incorrect use of list iterator after the loop"
>       Revert "cifs: fix bad fids sent over wire"
>       Revert "cifs: change smb2_query_info_compound to use a cached 
> fid, if available"
>       Revert "cifs: convert the path to utf16 in 
> smb2_query_info_compound"
>       Revert "cifs: do not skip link targets when an I/O fails"
>       Revert "cifs: use a different reconnect helper for non-cifsd 
> threads"
>       Revert "cifs: truncate the inode and mapping when we simulate 
> fcollapse"
>      Revert "smb3: fix incorrect session setup check for multiuser 
> mounts"
>       Revert "treewide: Replace zero-length arrays with flexible-array 
> members"
>       Revert "cifs: mark sessions for reconnection in helper function"
>       Revert "cifs: call helper functions for marking channels for 
> reconnect"
>       Revert "cifs: call cifs_reconnect when a connection is marked"
>       Revert "improve error message when mount options conflict with 
> posix"
>       Revert "cifs: fix workstation_name for multiuser mounts"
>       Revert "cifs: unlock chan_lock before calling cifs_put_tcp_session"
>       Revert "Fix a warning about a malformed kernel doc comment in cifs"
>       Revert "cifs: update internal module number"
>       Revert "smb3: send NTLMSSP version information"
>       Revert "cifs: cifs_ses_mark_for_reconnect should also update 
> reconnect bits"
>       Revert "cifs: update tcpStatus during negotiate and sess setup"
>       Revert "cifs: make status checks in version independent callers"
>       Revert "cifs: remove repeated state change in dfs tree connect"
>       Revert "cifs: fix the cifs_reconnect path for DFS"
>       Revert "cifs: remove unused variable ses_selected"
>       Revert "cifs: protect all accesses to chan_* with chan_lock"
>       Revert "cifs: fix the connection state transitions with 
> multichannel"
>       Revert "cifs: check reconnects for channels of active tcons too"
>       Revert "smb3: add new defines from protocol specification"
>       Revert "cifs: serialize all mount attempts"
>       Revert "cifs: quirk for STATUS_OBJECT_NAME_INVALID returned for 
> non-ASCII dfs refs"
>       Revert "cifs: alloc_path_with_tree_prefix: do not append sep. if 
> the path is empty"
>       Revert "cifs: clean up an inconsistent indenting"
>       Revert "cifs: free ntlmsspblob allocated in negotiate"
>       Revert "cifs: fix FILE_BOTH_DIRECTORY_INFO definition"
>       Revert "cifs: move superblock magic defitions to magic.h"
>       Revert "cifs: Fix smb311_update_preauth_hash() kernel-doc comment"
>       Revert "cifs: avoid race during socket reconnect between send 
> and recv"
>       Revert "cifs: maintain a state machine for tcp/smb/tcon sessions"
>       Revert "cifs: fix hang on cifs_get_next_mid()"
>       Revert "cifs: take cifs_tcp_ses_lock for status checks"
>       Revert "cifs: reconnect only the connection and not smb session 
> where possible"
>       Revert "cifs: add WARN_ON for when chan_count goes below minimum"
>       Revert "cifs: adjust DebugData to use chans_need_reconnect for 
> conn status"
>       Revert "cifs: use the chans_need_reconnect bitmap for reconnect 
> status"
>       Revert "cifs: track individual channel status using 
> chans_need_reconnect"
>       Revert "cifs: remove redundant assignment to pointer p"
>       Revert "cifs: ignore resource_id while getting fscache super 
> cookie"
>       Revert "cifs: fix ntlmssp auth when there is no key exchange"
>       Revert "cifs: avoid use of dstaddr as key for fscache client 
> cookie"
>       Revert "cifs: add server conn_id to fscache client cookie"
>       Revert "cifs: wait for tcon resource_id before getting fscache 
> super"
>       Revert "cifs: update internal version number"
>       Revert "smb2: clarify rc initialization in smb2_reconnect"
>       Revert "cifs: populate server_hostname for extra channels"
>       Revert "cifs: introduce cifs_ses_mark_for_reconnect() helper"
>       Revert "cifs: protect srv_count with cifs_tcp_ses_lock"
>       Revert "cifs: move debug print out of spinlock"
>       Revert "cifs: do not duplicate fscache cookie for secondary 
> channels"
>       Revert "cifs: connect individual channel servers to primary 
> channel server"
>       Revert "cifs: do not negotiate session if session already exists"
>       Revert "smb3: do not setup the fscache_super_cookie until fsinfo 
> initialized"
>       Revert "cifs: fix potential use-after-free bugs"
>       Revert "smb3: add additional null check in SMB311_posix_mkdir"
>       Revert "cifs: release lock earlier in dequeue_mid error case"
>       Revert "smb3: add additional null check in SMB2_tcon"
>       Revert "smb3: add additional null check in SMB2_open"
>       Revert "smb3: add additional null check in SMB2_ioctl"
>       Revert "smb3: remove trivial dfs compile warning"
>       Revert "cifs: for compound requests, use open handle if possible"
>       Revert "cifs: convert list_for_each to entry variant"
>       Revert "cifs: fix print of hdr_flags in dfscache_proc_show()"
>       Revert "cifs: send workstation name during ntlmssp session setup"
>       Revert "smb3: add dynamic trace points for socket connection"
>       Revert "cifs: Move SMB2_Create definitions to the shared area"
>       Revert "cifs: Move more definitions into the shared area"
>       Revert "cifs: move NEGOTIATE_PROTOCOL definitions out into the 
> common area"
>       Revert "cifs: Create a new shared file holding smb2 pdu 
> definitions"
>       Revert "cifs: add mount parameter tcpnodelay"
>       Revert "SMB3: Do not send lease break acknowledgment if all file 
> handles have been closed"
>       Revert "cifs: fix lease break oops in xfstest generic/098"
>       Revert "cifs: fix mid leak during reconnection after timeout 
> threshold"
>       Revert "cifs: mapchars mount option ignored"
>       Revert "SMB3: drop reference to cfile before sending oplock break"
>       Revert "SMB3: Close all deferred handles of inode in case of 
> handle lease break"
>       Revert "SMB3: force unmount was failing to close deferred close 
> files"
>       Revert "smb3: fix problem remounting a share after shutdown"
>       Revert "cifs: release leases for deferred close handles when 
> freezing"
>       Revert "cifs: fix pcchunk length type in smb2_copychunk_range"
>       Revert "SMB3: Close deferred file handles in case of handle 
> lease break"
>       Revert "SMB3: Add missing locks to protect deferred close file 
> list"
>       Revert "cifs: sanitize paths in cifs_update_super_prepath."
>       Revert "smb3: lower default deferred close timeout to address 
> perf regression"
>       Revert "smb3: allow deferred close timeout to be configurable"
>       Revert "cifs: fix DFS traversal oops without 
> CONFIG_CIFS_DFS_UPCALL"
>       Revert "cifs: prevent infinite recursion in CIFSGetDFSRefer()"
>       Revert "cifs: print session id while listing open files"
>       Revert "cifs: empty interface list when server doesn't support 
> query interfaces"
>       Revert "cifs: Fix smb2_set_path_size()"
>       Revert "cifs: Move the in_send statistic to __smb_send_rqst()"
>       Revert "cifs: Fix uninitialized memory read in smb3_qfs_tcon()"
>       Revert "cifs: Fix warning and UAF when destroy the MR list"
>       Revert "cifs: Fix lost destroy smbd connection when MR allocate 
> failed"
>       Revert "cifs: Fix use-after-free in rdata->read_into_pages()"
>       Revert "cifs: fix return of uninitialized rc in 
> dfs_cache_update_tgthint()"
>       Revert "cifs: Fix oops due to uncleared server->smbd_conn in 
> reconnect"
>       Revert "cifs: fix potential deadlock in cache_refresh_path()"
>       Revert "cifs: do not include page data when checking signature"
>       Revert "cifs: Fix uninitialized memory read for smb311 posix 
> symlink create"
>       Revert "cifs: fix missing display of three mount options"
>       Revert "cifs: fix confusing debug message"
>       Revert "cifs: fix oops during encryption"
>       Revert "cifs: fix use-after-free caused by invalid pointer 
> `hostname`"
>       Revert "cifs: fix missed refcounting of ipc tcon"
>       Revert "cifs: Fix connections leak when tlink setup failed"
>       Revert "cifs: support nested dfs links over reconnect"
>       Revert "cifs: split out dfs code from cifs_reconnect()"
>       Revert "cifs: introduce new helper for cifs_reconnect()"
>       Revert "cifs: add check for returning value of SMB2_set_info_init"
>       Revert "cifs: Fix wrong return value checking when GETFLAGS"
>      Revert "cifs: add check for returning value of SMB2_close_init"
>       Revert "cifs: fix regression in very old smb1 mounts"
>       Revert "cifs: Fix xid leak in cifs_ses_add_channel()"
>       Revert "cifs: Fix xid leak in cifs_flock()"
>       Revert "cifs: Fix xid leak in cifs_copy_file_range()"
>       Revert "cifs: Fix xid leak in cifs_create()"
>       Revert "cifs: return correct error in ->calc_signature()"
>       Revert "smb3: must initialize two ACL struct fields to zero"
>       Revert "cifs: Fix the error length of VALIDATE_NEGOTIATE_INFO 
> message"
>       Revert "cifs: destage dirty pages before re-reading them for 
> cache=none"
>       Revert "cifs: always initialize struct msghdr smb_msg completely"
>       Revert "cifs: don't send down the destination address to sendmsg 
> for a SOCK_STREAM"
>       Revert "cifs: revalidate mapping when doing direct writes"
>       Revert "cifs: fix small mempool leak in SMB2_negotiate()"
>       Revert "smb3: missing inode locks in punch hole"
>       Revert "smb3: check xattr value length earlier"
>       Revert "cifs: Fix memory leak on the deferred close"
>       Revert "SMB3: fix lease break timeout when multiple deferred 
> close handles for the same file."
>       Revert "cifs: fix reconnect on smb3 mount types"
>       Revert "cifs: return errors during session setup during reconnects"
>       Revert "cifs: version operations for smb20 unneeded when legacy 
> support disabled"
>       Revert "SMB3: EBADF/EIO errors in rename/open caused by race 
> condition in smb2_compound_op"
>       Revert "smb3: check for null tcon"
>       Revert "cifs: when extending a file with falloc we should make 
> files not-sparse"
>       Revert "cifs: fix potential double free during failed mount"
>       Revert "cifs: destage any unwritten data to the server before 
> calling copychunk_write"
>       Revert "cifs: Check the IOCB_DIRECT flag, not O_DIRECT"
>       Revert "cifs: verify that tcon is valid before dereference in 
> cifs_kill_sb"
>       Revert "cifs: potential buffer overflow in handling symlinks"
>       Revert "cifs: release cached dentries only if mount is complete"
>       Revert "Adjust cifssb maximum read size"
>       Revert "cifs: fix NULL ptr dereference in smb2_ioctl_query_info()"
>       Revert "cifs: prevent bad output lengths in 
> smb2_ioctl_query_info()"
>       Revert "cifs: we do not need a spinlock around the tree access 
> during umount"
>       Revert "cifs: fix handlecache and multiuser"
>       Revert "cifs: fix confusing unneeded warning message on smb2.1 
> and earlier"
>       Revert "cifs: protect session channel fields with chan_lock"
>       Revert "cifs: modefromsids must add an ACE for authenticated users"
>       Revert "cifs: fix double free race when mount fails in 
> cifs_get_root()"
>       Revert "cifs: do not use uninitialized data in the owner/group sid"
>       Revert "smb3: fix snapshot mount option"
>       Revert "cifs: fix set of group SID via NTSD xattrs"
>       Revert "cifs: sanitize multiple delimiters in prepath"
>       Revert "cifs: Fix crash on unload of cifs_arc4.ko"
>       Revert "cifs: nosharesock should be set on new server"
>       Revert "cifs: nosharesock should not share socket with future 
> sessions"
>       Revert "cifs: fix memory leak of 
> smb3_fs_context_dup::server_hostname"
>       Revert "smb3: do not error on fsync when readonly"
>       Revert "cifs: set a minimum of 120s for next dns resolution"
>       Revert "cifs: To match file servers, make sure the server 
> hostname matches"
>
> Tom Talpey (4):
>       Decrease the number of SMB3 smbdirect client SGEs
>       Reduce client smbdirect max receive segment size
>       Handle variable number of SGEs in client smbdirect send.
>       Fix formatting of client smbdirect RDMA logging
>
> Vincent Whitchurch (2):
>       cifs: Fix crash on unload of cifs_arc4.ko
>       cifs: fix potential deadlock in direct reclaim
>
> Volker Lendecke (10):
>       cifs: Add "extbuf" and "extbuflen" args to smb2_compound_op()
>       cifs: Parse owner/group for stat in smb311 posix extensions
>       cifs: Fix uninitialized memory read for smb311 posix symlink create
>       cifs: Fix uninitialized memory read in smb3_qfs_tcon()
>       cifs: Fix uninitialized memory reads for oparms.mode
>       cifs: Fix smb2_set_path_size()
>       cifs: Simplify SMB2_open_init()
>       cifs: Simplify SMB2_open_init()
>       cifs: Simplify SMB2_open_init()
>       cifs: Avoid a cast in add_lease_context()
>
> Wolfram Sang (1):
>       cifs: move from strlcpy with unused retval to strscpy
>
> Xiaomeng Tong (1):
>       cifs: fix incorrect use of list iterator after the loop
>
> Yang Li (3):
>       cifs: Fix smb311_update_preauth_hash() kernel-doc comment
>       cifs: clean up an inconsistent indenting
>       cifs: Remove duplicated include in cifsglob.h
>
> Yang Yingliang (2):
>       cifs: fix wrong unlock before return from cifs_tree_connect()
>       cifs: use LIST_HEAD() and list_move() to simplify code
>
> Yu Zhe (2):
>       cifs: remove unnecessary type castings
>       cifs: remove unnecessary (void*) conversions.
>
> Zeng Heng (1):
>       cifs: fix use-after-free caused by invalid pointer `hostname`
>
> Zhang Xiaoxu (18):
>       cifs: Fix memory leak on the deferred close
>       cifs: Use help macro to get the header preamble size
>       cifs: Use help macro to get the mid header size
>       cifs: Add helper function to check smb1+ server
>       cifs: Fix the error length of VALIDATE_NEGOTIATE_INFO message
>       cifs: Fix xid leak in cifs_create()
>       cifs: Fix xid leak in cifs_copy_file_range()
>       cifs: Fix xid leak in cifs_flock()
>       cifs: Fix xid leak in cifs_ses_add_channel()
>       cifs: Fix xid leak in cifs_get_file_info_unix()
>       cifs: Fix memory leak when build ntlmssp negotiate blob failed
>       cifs: Fix pages array leak when writedata alloc failed in 
> cifs_writedata_alloc()
>       cifs: Fix pages leak when writedata alloc failed in 
> cifs_write_from_iter()
>       cifs: Fix connections leak when tlink setup failed
>       cifs: Fix wrong return value checking when GETFLAGS
>       cifs: Fix lost destroy smbd connection when MR allocate failed
>      cifs: Fix warning and UAF when destroy the MR list
>       cifs: Move the in_send statistic to __smb_send_rqst()
>
> ZhaoLong Wang (1):
>       cifs: Fix use-after-free in rdata->read_into_pages()
>
>  fs/cifs/Kconfig           |   65 +-
>  fs/cifs/Makefile          |    8 +-
>  fs/cifs/cached_dir.c      |  606 +++++++++++++++++
>  fs/cifs/cached_dir.h      |   80 +++
>  fs/cifs/cifs_debug.c      |  207 ++++--
>  fs/cifs/cifs_debug.h      |   18 +-
>  fs/cifs/cifs_dfs_ref.c    |  264 ++------
>  fs/cifs/cifs_fs_sb.h      |    2 -
>  fs/cifs/cifs_ioctl.h      |   10 +-
>  fs/cifs/cifs_spnego.c     |    2 +-
>  fs/cifs/cifs_spnego.h     |    2 +-
>  fs/cifs/cifs_swn.c        |   12 +-
>  fs/cifs/cifsacl.c         |   38 +-
>  fs/cifs/cifsencrypt.c     |  110 ++-
>  fs/cifs/cifsfs.c          |  154 +++--
>  fs/cifs/cifsfs.h          |    8 +-
>  fs/cifs/cifsglob.h        |  382 +++++------
>  fs/cifs/cifspdu.h         |  155 ++---
>  fs/cifs/cifsproto.h       |  122 +++-
>  fs/cifs/cifsroot.c        |    2 +-
>  fs/cifs/cifssmb.c         |  787 ++++------------------
>  fs/cifs/connect.c         | 1619 
> ++++++++++++++++-----------------------------
>  fs/cifs/dfs.c             |  596 +++++++++++++++++
>  fs/cifs/dfs.h             |   85 +++
>  fs/cifs/dfs_cache.c       |  703 +++++---------------
>  fs/cifs/dfs_cache.h       |   16 +-
>  fs/cifs/dir.c             |   84 +--
>  fs/cifs/dns_resolve.c     |   49 +-
>  fs/cifs/dns_resolve.h     |    4 +-
>  fs/cifs/file.c            |  391 +++++++++--
>  fs/cifs/fs_context.c      |   99 ++-
>  fs/cifs/fs_context.h      |    5 +-
>  fs/cifs/fscache.c         |    2 +-
>  fs/cifs/inode.c           |  310 +++++----
>  fs/cifs/ioctl.c           |   57 +-
>  fs/cifs/link.c            |  196 ++----
>  fs/cifs/misc.c            |  335 ++++++----
>  fs/cifs/netmisc.c         |    2 +-
>  fs/cifs/ntlmssp.h         |    4 +-
>  fs/cifs/readdir.c         |   48 +-
>  fs/cifs/sess.c            |   74 ++-
>  fs/cifs/smb1ops.c         |  189 +++---
>  fs/cifs/smb2file.c        |  128 +++-
>  fs/cifs/smb2inode.c       |  277 +++++---
>  fs/cifs/smb2misc.c        |  152 +++--
>  fs/cifs/smb2ops.c         | 1121 +++++++++++++------------------
>  fs/cifs/smb2pdu.c         |  631 ++++++++++--------
>  fs/cifs/smb2pdu.h         |   25 +-
>  fs/cifs/smb2proto.h       |   44 +-
>  fs/cifs/smb2transport.c   |  176 ++---
>  fs/cifs/smbdirect.c       |  227 +++----
>  fs/cifs/smbdirect.h       |   14 +-
>  fs/cifs/trace.h           |   35 +-
>  fs/cifs/transport.c       |  386 ++++++++---
>  fs/cifs/xattr.c           |    5 +-
>  fs/smbfs_common/smb2pdu.h |  124 +++-
>  56 files changed, 6028 insertions(+), 5219 deletions(-)
>  create mode 100644 fs/cifs/cached_dir.c
>  create mode 100644 fs/cifs/cached_dir.h
>  create mode 100644 fs/cifs/dfs.c
>  create mode 100644 fs/cifs/dfs.h
>




More information about the kernel-team mailing list