Commit 0d85b27b authored by Linus Torvalds's avatar Linus Torvalds

Merge tag '6.4-rc3-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6

Pull smb directory moves and client fixes from Steve French:
 "Four smb3 client fixes (three of which marked for stable) and three
  patches to move of fs/cifs and fs/ksmbd to a new common "fs/smb"
  parent directory

   - Move the client and server source directories to a common parent
     directory:

       fs/cifs -> fs/smb/client
       fs/ksmbd -> fs/smb/server
       fs/smbfs_common -> fs/smb/common

   - important readahead fix

   - important fix for SMB1 regression

   - fix for missing mount option ("mapchars") in mount API conversion

   - minor debugging improvement"

* tag '6.4-rc3-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6:
  smb3: move Documentation/filesystems/cifs to Documentation/filesystems/smb
  cifs: correct references in Documentation to old fs/cifs path
  smb: move client and server files to common directory fs/smb
  cifs: mapchars mount option ignored
  smb3: display debug information better for encryption
  cifs: fix smb1 mount regression
  cifs: Fix cifs_limit_bvec_subset() to correctly check the maxmimum size
parents 192fe71c ab6cacf8
...@@ -5,5 +5,5 @@ Changes ...@@ -5,5 +5,5 @@ Changes
See https://wiki.samba.org/index.php/LinuxCIFSKernel for summary See https://wiki.samba.org/index.php/LinuxCIFSKernel for summary
information about fixes/improvements to CIFS/SMB2/SMB3 support (changes information about fixes/improvements to CIFS/SMB2/SMB3 support (changes
to cifs.ko module) by kernel version (and cifs internal module version). to cifs.ko module) by kernel version (and cifs internal module version).
This may be easier to read than parsing the output of "git log fs/cifs" This may be easier to read than parsing the output of
by release. "git log fs/smb/client" by release.
...@@ -45,7 +45,7 @@ Installation instructions ...@@ -45,7 +45,7 @@ Installation instructions
If you have built the CIFS vfs as module (successfully) simply If you have built the CIFS vfs as module (successfully) simply
type ``make modules_install`` (or if you prefer, manually copy the file to type ``make modules_install`` (or if you prefer, manually copy the file to
the modules directory e.g. /lib/modules/2.4.10-4GB/kernel/fs/cifs/cifs.ko). the modules directory e.g. /lib/modules/6.3.0-060300-generic/kernel/fs/smb/client/cifs.ko).
If you have built the CIFS vfs into the kernel itself, follow the instructions If you have built the CIFS vfs into the kernel itself, follow the instructions
for your distribution on how to install a new kernel (usually you for your distribution on how to install a new kernel (usually you
...@@ -66,15 +66,15 @@ If cifs is built as a module, then the size and number of network buffers ...@@ -66,15 +66,15 @@ If cifs is built as a module, then the size and number of network buffers
and maximum number of simultaneous requests to one server can be configured. and maximum number of simultaneous requests to one server can be configured.
Changing these from their defaults is not recommended. By executing modinfo:: Changing these from their defaults is not recommended. By executing modinfo::
modinfo kernel/fs/cifs/cifs.ko modinfo <path to cifs.ko>
on kernel/fs/cifs/cifs.ko the list of configuration changes that can be made on kernel/fs/smb/client/cifs.ko the list of configuration changes that can be made
at module initialization time (by running insmod cifs.ko) can be seen. at module initialization time (by running insmod cifs.ko) can be seen.
Recommendations Recommendations
=============== ===============
To improve security the SMB2.1 dialect or later (usually will get SMB3) is now To improve security the SMB2.1 dialect or later (usually will get SMB3.1.1) is now
the new default. To use old dialects (e.g. to mount Windows XP) use "vers=1.0" the new default. To use old dialects (e.g. to mount Windows XP) use "vers=1.0"
on mount (or vers=2.0 for Windows Vista). Note that the CIFS (vers=1.0) is on mount (or vers=2.0 for Windows Vista). Note that the CIFS (vers=1.0) is
much older and less secure than the default dialect SMB3 which includes much older and less secure than the default dialect SMB3 which includes
......
...@@ -72,7 +72,6 @@ Documentation for filesystem implementations. ...@@ -72,7 +72,6 @@ Documentation for filesystem implementations.
befs befs
bfs bfs
btrfs btrfs
cifs/index
ceph ceph
coda coda
configfs configfs
...@@ -111,6 +110,7 @@ Documentation for filesystem implementations. ...@@ -111,6 +110,7 @@ Documentation for filesystem implementations.
ramfs-rootfs-initramfs ramfs-rootfs-initramfs
relay relay
romfs romfs
smb/index
spufs/index spufs/index
squashfs squashfs
sysfs sysfs
......
...@@ -59,7 +59,7 @@ the root file system via SMB protocol. ...@@ -59,7 +59,7 @@ the root file system via SMB protocol.
Enables the kernel to mount the root file system via SMB that are Enables the kernel to mount the root file system via SMB that are
located in the <server-ip> and <share> specified in this option. located in the <server-ip> and <share> specified in this option.
The default mount options are set in fs/cifs/cifsroot.c. The default mount options are set in fs/smb/client/cifsroot.c.
server-ip server-ip
IPv4 address of the server. IPv4 address of the server.
......
...@@ -363,7 +363,7 @@ Code Seq# Include File Comments ...@@ -363,7 +363,7 @@ Code Seq# Include File Comments
0xCC 00-0F drivers/misc/ibmvmc.h pseries VMC driver 0xCC 00-0F drivers/misc/ibmvmc.h pseries VMC driver
0xCD 01 linux/reiserfs_fs.h 0xCD 01 linux/reiserfs_fs.h
0xCE 01-02 uapi/linux/cxl_mem.h Compute Express Link Memory Devices 0xCE 01-02 uapi/linux/cxl_mem.h Compute Express Link Memory Devices
0xCF 02 fs/cifs/ioctl.c 0xCF 02 fs/smb/client/cifs_ioctl.h
0xDB 00-0F drivers/char/mwave/mwavepub.h 0xDB 00-0F drivers/char/mwave/mwavepub.h
0xDD 00-3F ZFCP device driver see drivers/s390/scsi/ 0xDD 00-3F ZFCP device driver see drivers/s390/scsi/
<mailto:aherrman@de.ibm.com> <mailto:aherrman@de.ibm.com>
......
...@@ -5140,8 +5140,8 @@ S: Supported ...@@ -5140,8 +5140,8 @@ S: Supported
W: https://wiki.samba.org/index.php/LinuxCIFS W: https://wiki.samba.org/index.php/LinuxCIFS
T: git git://git.samba.org/sfrench/cifs-2.6.git T: git git://git.samba.org/sfrench/cifs-2.6.git
F: Documentation/admin-guide/cifs/ F: Documentation/admin-guide/cifs/
F: fs/cifs/ F: fs/smb/client/
F: fs/smbfs_common/ F: fs/smb/common/
F: include/uapi/linux/cifs F: include/uapi/linux/cifs
COMPACTPCI HOTPLUG CORE COMPACTPCI HOTPLUG CORE
...@@ -11301,9 +11301,9 @@ R: Tom Talpey <tom@talpey.com> ...@@ -11301,9 +11301,9 @@ R: Tom Talpey <tom@talpey.com>
L: linux-cifs@vger.kernel.org L: linux-cifs@vger.kernel.org
S: Maintained S: Maintained
T: git git://git.samba.org/ksmbd.git T: git git://git.samba.org/ksmbd.git
F: Documentation/filesystems/cifs/ksmbd.rst F: Documentation/filesystems/smb/ksmbd.rst
F: fs/ksmbd/ F: fs/smb/common/
F: fs/smbfs_common/ F: fs/smb/server/
KERNEL UNIT TESTING FRAMEWORK (KUnit) KERNEL UNIT TESTING FRAMEWORK (KUnit)
M: Brendan Higgins <brendanhiggins@google.com> M: Brendan Higgins <brendanhiggins@google.com>
......
...@@ -368,14 +368,7 @@ config NFS_V4_2_SSC_HELPER ...@@ -368,14 +368,7 @@ config NFS_V4_2_SSC_HELPER
source "net/sunrpc/Kconfig" source "net/sunrpc/Kconfig"
source "fs/ceph/Kconfig" source "fs/ceph/Kconfig"
source "fs/cifs/Kconfig" source "fs/smb/Kconfig"
source "fs/ksmbd/Kconfig"
config SMBFS_COMMON
tristate
default y if CIFS=y || SMB_SERVER=y
default m if CIFS=m || SMB_SERVER=m
source "fs/coda/Kconfig" source "fs/coda/Kconfig"
source "fs/afs/Kconfig" source "fs/afs/Kconfig"
source "fs/9p/Kconfig" source "fs/9p/Kconfig"
......
...@@ -95,9 +95,7 @@ obj-$(CONFIG_LOCKD) += lockd/ ...@@ -95,9 +95,7 @@ obj-$(CONFIG_LOCKD) += lockd/
obj-$(CONFIG_NLS) += nls/ obj-$(CONFIG_NLS) += nls/
obj-y += unicode/ obj-y += unicode/
obj-$(CONFIG_SYSV_FS) += sysv/ obj-$(CONFIG_SYSV_FS) += sysv/
obj-$(CONFIG_SMBFS_COMMON) += smbfs_common/ obj-$(CONFIG_SMBFS) += smb/
obj-$(CONFIG_CIFS) += cifs/
obj-$(CONFIG_SMB_SERVER) += ksmbd/
obj-$(CONFIG_HPFS_FS) += hpfs/ obj-$(CONFIG_HPFS_FS) += hpfs/
obj-$(CONFIG_NTFS_FS) += ntfs/ obj-$(CONFIG_NTFS_FS) += ntfs/
obj-$(CONFIG_NTFS3_FS) += ntfs3/ obj-$(CONFIG_NTFS3_FS) += ntfs3/
......
# SPDX-License-Identifier: GPL-2.0-only
#
# smbfs configuration
source "fs/smb/client/Kconfig"
source "fs/smb/server/Kconfig"
config SMBFS
tristate
default y if CIFS=y || SMB_SERVER=y
default m if CIFS=m || SMB_SERVER=m
# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_SMBFS) += common/
obj-$(CONFIG_CIFS) += client/
obj-$(CONFIG_SMB_SERVER) += server/
...@@ -108,7 +108,7 @@ static void cifs_debug_tcon(struct seq_file *m, struct cifs_tcon *tcon) ...@@ -108,7 +108,7 @@ static void cifs_debug_tcon(struct seq_file *m, struct cifs_tcon *tcon)
if ((tcon->seal) || if ((tcon->seal) ||
(tcon->ses->session_flags & SMB2_SESSION_FLAG_ENCRYPT_DATA) || (tcon->ses->session_flags & SMB2_SESSION_FLAG_ENCRYPT_DATA) ||
(tcon->share_flags & SHI1005_FLAGS_ENCRYPT_DATA)) (tcon->share_flags & SHI1005_FLAGS_ENCRYPT_DATA))
seq_printf(m, " Encrypted"); seq_puts(m, " encrypted");
if (tcon->nocase) if (tcon->nocase)
seq_printf(m, " nocase"); seq_printf(m, " nocase");
if (tcon->unix_ext) if (tcon->unix_ext)
...@@ -415,8 +415,12 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v) ...@@ -415,8 +415,12 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v)
/* dump session id helpful for use with network trace */ /* dump session id helpful for use with network trace */
seq_printf(m, " SessionId: 0x%llx", ses->Suid); seq_printf(m, " SessionId: 0x%llx", ses->Suid);
if (ses->session_flags & SMB2_SESSION_FLAG_ENCRYPT_DATA) if (ses->session_flags & SMB2_SESSION_FLAG_ENCRYPT_DATA) {
seq_puts(m, " encrypted"); seq_puts(m, " encrypted");
/* can help in debugging to show encryption type */
if (server->cipher_type == SMB2_ENCRYPTION_AES256_GCM)
seq_puts(m, "(gcm256)");
}
if (ses->sign) if (ses->sign)
seq_puts(m, " signed"); seq_puts(m, " signed");
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
#include <linux/random.h> #include <linux/random.h>
#include <linux/highmem.h> #include <linux/highmem.h>
#include <linux/fips.h> #include <linux/fips.h>
#include "../smbfs_common/arc4.h" #include "../common/arc4.h"
#include <crypto/aead.h> #include <crypto/aead.h>
/* /*
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
#include "cifsacl.h" #include "cifsacl.h"
#include <crypto/internal/hash.h> #include <crypto/internal/hash.h>
#include <uapi/linux/cifs/cifs_mount.h> #include <uapi/linux/cifs/cifs_mount.h>
#include "../smbfs_common/smb2pdu.h" #include "../common/smb2pdu.h"
#include "smb2pdu.h" #include "smb2pdu.h"
#include <linux/filelock.h> #include <linux/filelock.h>
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
#include <net/sock.h> #include <net/sock.h>
#include <asm/unaligned.h> #include <asm/unaligned.h>
#include "../smbfs_common/smbfsctl.h" #include "../common/smbfsctl.h"
#define CIFS_PROT 0 #define CIFS_PROT 0
#define POSIX_PROT (CIFS_PROT+1) #define POSIX_PROT (CIFS_PROT+1)
......
...@@ -303,7 +303,7 @@ int dfs_mount_share(struct cifs_mount_ctx *mnt_ctx, bool *isdfs) ...@@ -303,7 +303,7 @@ int dfs_mount_share(struct cifs_mount_ctx *mnt_ctx, bool *isdfs)
if (!nodfs) { if (!nodfs) {
rc = dfs_get_referral(mnt_ctx, ctx->UNC + 1, NULL, NULL); rc = dfs_get_referral(mnt_ctx, ctx->UNC + 1, NULL, NULL);
if (rc) { if (rc) {
if (rc != -ENOENT && rc != -EOPNOTSUPP) if (rc != -ENOENT && rc != -EOPNOTSUPP && rc != -EIO)
goto out; goto out;
nodfs = true; nodfs = true;
} }
......
...@@ -3353,9 +3353,10 @@ static size_t cifs_limit_bvec_subset(const struct iov_iter *iter, size_t max_siz ...@@ -3353,9 +3353,10 @@ static size_t cifs_limit_bvec_subset(const struct iov_iter *iter, size_t max_siz
while (n && ix < nbv) { while (n && ix < nbv) {
len = min3(n, bvecs[ix].bv_len - skip, max_size); len = min3(n, bvecs[ix].bv_len - skip, max_size);
span += len; span += len;
max_size -= len;
nsegs++; nsegs++;
ix++; ix++;
if (span >= max_size || nsegs >= max_segs) if (max_size == 0 || nsegs >= max_segs)
break; break;
skip = 0; skip = 0;
n -= len; n -= len;
......
...@@ -904,6 +904,14 @@ static int smb3_fs_context_parse_param(struct fs_context *fc, ...@@ -904,6 +904,14 @@ static int smb3_fs_context_parse_param(struct fs_context *fc,
ctx->sfu_remap = false; /* disable SFU mapping */ ctx->sfu_remap = false; /* disable SFU mapping */
} }
break; break;
case Opt_mapchars:
if (result.negated)
ctx->sfu_remap = false;
else {
ctx->sfu_remap = true;
ctx->remap = false; /* disable SFM (mapposix) mapping */
}
break;
case Opt_user_xattr: case Opt_user_xattr:
if (result.negated) if (result.negated)
ctx->no_xattr = 1; ctx->no_xattr = 1;
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
#include "cifsglob.h" #include "cifsglob.h"
#include "cifs_debug.h" #include "cifs_debug.h"
#include "cifsproto.h" #include "cifsproto.h"
#include "../smbfs_common/md4.h" #include "../common/md4.h"
#ifndef false #ifndef false
#define false 0 #define false 0
......
...@@ -3,5 +3,5 @@ ...@@ -3,5 +3,5 @@
# Makefile for Linux filesystem routines that are shared by client and server. # Makefile for Linux filesystem routines that are shared by client and server.
# #
obj-$(CONFIG_SMBFS_COMMON) += cifs_arc4.o obj-$(CONFIG_SMBFS) += cifs_arc4.o
obj-$(CONFIG_SMBFS_COMMON) += cifs_md4.o obj-$(CONFIG_SMBFS) += cifs_md4.o
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment