mirror-linux/fs/smb/client
Steve French 8767cb3fbd Fix SMB311 posix special file creation to servers which do not advertise reparse support
Some servers (including Samba), support the SMB3.1.1 POSIX Extensions (which use reparse
points for handling special files) but do not properly advertise file system attribute
FILE_SUPPORTS_REPARSE_POINTS.  Although we don't check for this attribute flag when
querying special file information, we do check it when creating special files which
causes them to fail unnecessarily.   If we have negotiated SMB3.1.1 POSIX Extensions
with the server we can expect the server to support creating special files via
reparse points, and even if the server fails the operation due to really forbidding
creating special files, then it should be no problem and is more likely to return a
more accurate rc in any case (e.g. EACCES instead of EOPNOTSUPP).

Allow creating special files as long as the server supports either reparse points
or the SMB3.1.1 POSIX Extensions (note that if the "sfu" mount option is specified
it uses a different way of storing special files that does not rely on reparse points).

Cc: <stable@vger.kernel.org>
Fixes: 6c06be908c ("cifs: Check if server supports reparse points before using them")
Acked-by: Ralph Boehme <slow@samba.org>
Acked-by: Paulo Alcantara (Red Hat) <pc@manguebit.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
2025-07-18 12:12:02 -05:00
..
compress move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
Kconfig smb: client: Deduplicate "select NETFS_SUPPORT" in Kconfig 2024-12-19 09:24:35 -06:00
Makefile smb3: mark compression as CONFIG_EXPERIMENTAL and fix missing compression operation 2024-09-15 10:42:44 -05:00
asn1.c smb3: add support for IAKerb 2025-01-31 12:51:44 -06:00
cached_dir.c smb: Log an error when close_all_cached_dirs fails 2025-06-21 11:03:25 -05:00
cached_dir.h smb: Use loff_t for directory position in cached_dirents 2025-06-21 11:03:25 -05:00
cifs_debug.c smb: minor fix to use sizeof to initialize flags_string buffer 2025-06-21 11:03:25 -05:00
cifs_debug.h
cifs_fs_sb.h smb:client: smb: client: Add reverse mapping from tcon to superblocks 2025-03-31 21:12:31 -05:00
cifs_ioctl.h smb: minor fix to use SMB2_NTLMV2_SESSKEY_SIZE for auth_key size 2025-06-21 11:03:25 -05:00
cifs_spnego.c smb3: add support for IAKerb 2025-01-31 12:51:44 -06:00
cifs_spnego.h
cifs_spnego_negtokeninit.asn1
cifs_swn.c
cifs_swn.h
cifs_unicode.c cifs: Fix creating native symlinks pointing to current or parent directory 2024-10-06 22:57:12 -05:00
cifs_unicode.h
cifsacl.c cifs: add validation check for the fields in smb_aces 2025-03-26 14:51:14 -05:00
cifsacl.h smb: client: Correct typos in multiple comments across various files 2024-10-02 17:52:24 -05:00
cifsencrypt.c smb: client: fix UAF in decryption with multichannel 2025-04-09 10:24:55 -05:00
cifsfs.c 13 smb3/cifs client fixes 2025-06-03 16:04:29 -07:00
cifsfs.h cifs: update internal version number 2025-06-05 10:21:17 -05:00
cifsglob.h smb: client: fix race condition in negotiate timeout by using more precise timing 2025-07-03 18:41:49 -05:00
cifspdu.h cifs: Correctly set SMB1 SessionKey field in Session Setup Request 2025-06-01 20:43:49 -05:00
cifsproto.h cifs: all initializations for tcon should happen in tcon_info_alloc 2025-06-30 14:44:44 -05:00
cifsroot.c
cifssmb.c netfs: Update tracepoints in a number of ways 2025-07-01 22:37:14 +02:00
compress.c smb/client: Fix logically dead code 2024-10-16 00:30:52 -05:00
compress.h smb: client: compress: LZ77 code improvements cleanup 2024-09-15 10:42:45 -05:00
connect.c smb: client: fix race condition in negotiate timeout by using more precise timing 2025-07-03 18:41:49 -05:00
dfs.c smb: client: don't trust DFSREF_STORAGE_SERVER bit 2025-02-05 21:09:00 -06:00
dfs.h smb: client: get rid of kstrdup() in get_ses_refpath() 2025-02-05 21:09:07 -06:00
dfs_cache.c smb: client: get rid of kstrdup() in get_ses_refpath() 2025-02-05 21:09:07 -06:00
dfs_cache.h
dir.c smb: invalidate and close cached directory when creating child entries 2025-07-13 17:16:29 -05:00
dns_resolve.c smb: client: provide dns_resolve_{unc,name} helpers 2025-01-19 19:34:00 -06:00
dns_resolve.h smb: client: provide dns_resolve_{unc,name} helpers 2025-01-19 19:34:00 -06:00
export.c exportfs: make ->encode_fh() a mandatory method for NFS export 2023-10-28 16:15:15 +02:00
file.c smb: client: fix use-after-free in cifs_oplock_break 2025-07-13 17:16:29 -05:00
fs_context.c smb: client: fix native SMB symlink traversal 2025-07-03 18:43:04 -05:00
fs_context.h smb: client: ensure aligned IO sizes 2025-05-01 08:35:58 -05:00
fscache.c cifs: Remove some code that's no longer used, part 1 2024-05-01 18:08:21 +01:00
fscache.h cifs: Remove some code that's no longer used, part 1 2024-05-01 18:08:21 +01:00
inode.c cifs: Split parse_reparse_point callback to functions: get buffer and parse buffer 2025-04-09 15:37:35 -05:00
ioctl.c smb: minor fix to use SMB2_NTLMV2_SESSKEY_SIZE for auth_key size 2025-06-21 11:03:25 -05:00
link.c cifs: Fix querying and creating MF symlinks over SMB1 2025-04-01 01:54:17 -05:00
misc.c cifs: all initializations for tcon should happen in tcon_info_alloc 2025-06-30 14:44:44 -05:00
namespace.c 13 smb3/cifs client fixes 2025-06-03 16:04:29 -07:00
netlink.c
netlink.h
netmisc.c cifs: Change translation of STATUS_PRIVILEGE_NOT_HELD to -EPERM 2025-01-29 16:52:25 -06:00
nterr.c cifs: Change translation of STATUS_NOT_A_REPARSE_POINT to -ENODATA 2025-01-26 23:12:03 -06:00
nterr.h cifs: Change translation of STATUS_NOT_A_REPARSE_POINT to -ENODATA 2025-01-26 23:12:03 -06:00
ntlmssp.h
readdir.c smb: client: fix readdir returning wrong type with POSIX extensions 2025-06-29 16:16:29 -05:00
reparse.c smb: client: fix native SMB symlink traversal 2025-07-03 18:43:04 -05:00
reparse.h cifs: Split parse_reparse_point callback to functions: get buffer and parse buffer 2025-04-09 15:37:35 -05:00
rfc1002pdu.h cifs: Fix endian types in struct rfc1002_session_packet 2025-01-19 19:34:00 -06:00
sess.c smb: fix secondary channel creation issue with kerberos by populating hostname when adding channels 2025-06-18 13:27:45 -05:00
smb1ops.c smb: client: ensure aligned IO sizes 2025-05-01 08:35:58 -05:00
smb2file.c cifs: Do not add FILE_READ_ATTRIBUTES when using GENERIC_READ/EXECUTE/ALL 2025-04-01 04:58:09 -05:00
smb2glob.h cifs: Improve SMB2+ stat() to work also without FILE_READ_ATTRIBUTES 2025-04-01 04:58:05 -05:00
smb2inode.c Fix SMB311 posix special file creation to servers which do not advertise reparse support 2025-07-18 12:12:02 -05:00
smb2maperror.c cifs: Change translation of STATUS_PRIVILEGE_NOT_HELD to -EPERM 2025-01-29 16:52:25 -06:00
smb2misc.c cifs: avoid NULL pointer dereference in dbg call 2025-03-24 09:45:07 -05:00
smb2ops.c Fix SMB311 posix special file creation to servers which do not advertise reparse support 2025-07-18 12:12:02 -05:00
smb2pdu.c five smb3 client fixes 2025-07-05 13:05:28 -07:00
smb2pdu.h smb: client: correctly handle ErrorContextData as a flexible array 2025-01-19 19:34:00 -06:00
smb2proto.h smb: client: Remove an unused function and variable 2025-05-28 12:42:40 -05:00
smb2transport.c smb: client: fix use-after-free of signing key 2024-11-17 22:20:54 -06:00
smbdirect.c cifs: Fix reading into an ITER_FOLIOQ from the smbdirect code 2025-06-26 11:13:16 -05:00
smbdirect.h smb: client: make use of common smbdirect_socket_parameters 2025-06-03 18:42:47 -05:00
smbencrypt.c smb: client: delete "true", "false" defines 2024-01-23 12:41:02 -06:00
smberr.h
trace.c
trace.h smb: client: remove \t from TP_printk statements 2025-06-25 13:51:50 -05:00
transport.c cifs: deal with the channel loading lag while picking channels 2025-06-03 18:42:47 -05:00
unc.c
winucase.c
xattr.c cifs: Add a new xattr system.smb3_ntsd_owner for getting or setting owner 2025-04-01 01:54:17 -05:00