six ksmbd server fixes

-----BEGIN PGP SIGNATURE-----
 
 iQGzBAABCgAdFiEE6fsu8pdIjtWE/DpLiiy9cAdyT1EFAmJGd6AACgkQiiy9cAdy
 T1EPMAwAhVkPm9ugSwXKWPWiRnIuEiIi9oZm8pLLnpsXW4/FJFhJv8h+8cbOUj5S
 P/aApIVX7NRMZg6xIGjrWXIE6eqCQ0iwO5V/50x5mGLUbZNMOS/tfcXEoE1VVZnf
 XQlaY53oVMVvaZWqx7tw9SPsMapjCIngAZ9pJOBJdUbmi+DcWKJuOFrYs7iw6oM8
 tz4yBKh9N8qR8Ubq0f6guMl1VcMqGd+fYC/n/eHKY4hXhQSMOAGCYy4dqpP4aITr
 DJLhMqnTtmB2bU0q17ktsk2bBo6/ENvrIyG+ozLL7LGj6BHvbeqdb1HDQgRcdFyp
 JuvUZVeENLIa2AX9aFnXyjB4AM6ccFl036f1HgbnIfspH7s+EucFEsHmiFMCoMkY
 f4CMdA5NGBXZhWu9/7CduwbvaBkVFD57ucjXRLReJKAsJVN9sk5Q0/n8uNttQ+Ao
 iMfOkeI4cdp6gXXITS8H9H1MUkqE/bac9cS3A/8pSuUjAjImF5D9ZuWsuYkInmg9
 M+ms9G4U
 =j4Oh
 -----END PGP SIGNATURE-----

Merge tag '5.18-rc-ksmbd-server-fixes' of git://git.samba.org/ksmbd

Pull ksmbd updates from Steve French:

 - three cleanup fixes

 - shorten module load warning

 - two documentation fixes

* tag '5.18-rc-ksmbd-server-fixes' of git://git.samba.org/ksmbd:
  ksmbd: replace usage of found with dedicated list iterator variable
  ksmbd: Remove a redundant zeroing of memory
  MAINTAINERS: ksmbd: switch Sergey to reviewer
  ksmbd: shorten experimental warning on loading the module
  ksmbd: use netif_is_bridge_port
  Documentation: ksmbd: update Feature Status table
This commit is contained in:
Linus Torvalds 2022-04-01 14:39:28 -07:00
commit 7a3ecddc57
5 changed files with 17 additions and 18 deletions

View file

@ -82,10 +82,10 @@ Signing Update Supported.
Pre-authentication integrity Supported. Pre-authentication integrity Supported.
SMB3 encryption(CCM, GCM) Supported. (CCM and GCM128 supported, GCM256 in SMB3 encryption(CCM, GCM) Supported. (CCM and GCM128 supported, GCM256 in
progress) progress)
SMB direct(RDMA) Partially Supported. SMB3 Multi-channel is SMB direct(RDMA) Supported.
required to connect to Windows client.
SMB3 Multi-channel Partially Supported. Planned to implement SMB3 Multi-channel Partially Supported. Planned to implement
replay/retry mechanisms for future. replay/retry mechanisms for future.
Receive Side Scaling mode Supported.
SMB3.1.1 POSIX extension Supported. SMB3.1.1 POSIX extension Supported.
ACLs Partially Supported. only DACLs available, SACLs ACLs Partially Supported. only DACLs available, SACLs
(auditing) is planned for the future. For (auditing) is planned for the future. For

View file

@ -10668,9 +10668,9 @@ F: tools/testing/selftests/
KERNEL SMB3 SERVER (KSMBD) KERNEL SMB3 SERVER (KSMBD)
M: Namjae Jeon <linkinjeon@kernel.org> M: Namjae Jeon <linkinjeon@kernel.org>
M: Sergey Senozhatsky <senozhatsky@chromium.org>
M: Steve French <sfrench@samba.org> M: Steve French <sfrench@samba.org>
M: Hyunchul Lee <hyc.lee@gmail.com> M: Hyunchul Lee <hyc.lee@gmail.com>
R: Sergey Senozhatsky <senozhatsky@chromium.org>
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

View file

@ -585,7 +585,7 @@ static int __init ksmbd_server_init(void)
if (ret) if (ret)
goto err_crypto_destroy; goto err_crypto_destroy;
pr_warn_once("The ksmbd server is experimental, use at your own risk.\n"); pr_warn_once("The ksmbd server is experimental\n");
return 0; return 0;

View file

@ -6607,8 +6607,7 @@ int smb2_cancel(struct ksmbd_work *work)
struct ksmbd_conn *conn = work->conn; struct ksmbd_conn *conn = work->conn;
struct smb2_hdr *hdr = smb2_get_msg(work->request_buf); struct smb2_hdr *hdr = smb2_get_msg(work->request_buf);
struct smb2_hdr *chdr; struct smb2_hdr *chdr;
struct ksmbd_work *cancel_work = NULL; struct ksmbd_work *cancel_work = NULL, *iter;
int canceled = 0;
struct list_head *command_list; struct list_head *command_list;
ksmbd_debug(SMB, "smb2 cancel called on mid %llu, async flags 0x%x\n", ksmbd_debug(SMB, "smb2 cancel called on mid %llu, async flags 0x%x\n",
@ -6618,11 +6617,11 @@ int smb2_cancel(struct ksmbd_work *work)
command_list = &conn->async_requests; command_list = &conn->async_requests;
spin_lock(&conn->request_lock); spin_lock(&conn->request_lock);
list_for_each_entry(cancel_work, command_list, list_for_each_entry(iter, command_list,
async_request_entry) { async_request_entry) {
chdr = smb2_get_msg(cancel_work->request_buf); chdr = smb2_get_msg(iter->request_buf);
if (cancel_work->async_id != if (iter->async_id !=
le64_to_cpu(hdr->Id.AsyncId)) le64_to_cpu(hdr->Id.AsyncId))
continue; continue;
@ -6630,7 +6629,7 @@ int smb2_cancel(struct ksmbd_work *work)
"smb2 with AsyncId %llu cancelled command = 0x%x\n", "smb2 with AsyncId %llu cancelled command = 0x%x\n",
le64_to_cpu(hdr->Id.AsyncId), le64_to_cpu(hdr->Id.AsyncId),
le16_to_cpu(chdr->Command)); le16_to_cpu(chdr->Command));
canceled = 1; cancel_work = iter;
break; break;
} }
spin_unlock(&conn->request_lock); spin_unlock(&conn->request_lock);
@ -6638,24 +6637,24 @@ int smb2_cancel(struct ksmbd_work *work)
command_list = &conn->requests; command_list = &conn->requests;
spin_lock(&conn->request_lock); spin_lock(&conn->request_lock);
list_for_each_entry(cancel_work, command_list, request_entry) { list_for_each_entry(iter, command_list, request_entry) {
chdr = smb2_get_msg(cancel_work->request_buf); chdr = smb2_get_msg(iter->request_buf);
if (chdr->MessageId != hdr->MessageId || if (chdr->MessageId != hdr->MessageId ||
cancel_work == work) iter == work)
continue; continue;
ksmbd_debug(SMB, ksmbd_debug(SMB,
"smb2 with mid %llu cancelled command = 0x%x\n", "smb2 with mid %llu cancelled command = 0x%x\n",
le64_to_cpu(hdr->MessageId), le64_to_cpu(hdr->MessageId),
le16_to_cpu(chdr->Command)); le16_to_cpu(chdr->Command));
canceled = 1; cancel_work = iter;
break; break;
} }
spin_unlock(&conn->request_lock); spin_unlock(&conn->request_lock);
} }
if (canceled) { if (cancel_work) {
cancel_work->state = KSMBD_WORK_CANCELLED; cancel_work->state = KSMBD_WORK_CANCELLED;
if (cancel_work->cancel_fn) if (cancel_work->cancel_fn)
cancel_work->cancel_fn(cancel_work->cancel_argv); cancel_work->cancel_fn(cancel_work->cancel_argv);
@ -8484,7 +8483,7 @@ static void fill_transform_hdr(void *tr_buf, char *old_buf, __le16 cipher_type)
struct smb2_hdr *hdr = smb2_get_msg(old_buf); struct smb2_hdr *hdr = smb2_get_msg(old_buf);
unsigned int orig_len = get_rfc1002_len(old_buf); unsigned int orig_len = get_rfc1002_len(old_buf);
memset(tr_buf, 0, sizeof(struct smb2_transform_hdr) + 4); /* tr_buf must be cleared by the caller */
tr_hdr->ProtocolId = SMB2_TRANSFORM_PROTO_NUM; tr_hdr->ProtocolId = SMB2_TRANSFORM_PROTO_NUM;
tr_hdr->OriginalMessageSize = cpu_to_le32(orig_len); tr_hdr->OriginalMessageSize = cpu_to_le32(orig_len);
tr_hdr->Flags = cpu_to_le16(TRANSFORM_FLAG_ENCRYPTED); tr_hdr->Flags = cpu_to_le16(TRANSFORM_FLAG_ENCRYPTED);

View file

@ -476,7 +476,7 @@ static int ksmbd_netdev_event(struct notifier_block *nb, unsigned long event,
switch (event) { switch (event) {
case NETDEV_UP: case NETDEV_UP:
if (netdev->priv_flags & IFF_BRIDGE_PORT) if (netif_is_bridge_port(netdev))
return NOTIFY_OK; return NOTIFY_OK;
list_for_each_entry(iface, &iface_list, entry) { list_for_each_entry(iface, &iface_list, entry) {
@ -585,7 +585,7 @@ int ksmbd_tcp_set_interfaces(char *ifc_list, int ifc_list_sz)
rtnl_lock(); rtnl_lock();
for_each_netdev(&init_net, netdev) { for_each_netdev(&init_net, netdev) {
if (netdev->priv_flags & IFF_BRIDGE_PORT) if (netif_is_bridge_port(netdev))
continue; continue;
if (!alloc_iface(kstrdup(netdev->name, GFP_KERNEL))) if (!alloc_iface(kstrdup(netdev->name, GFP_KERNEL)))
return -ENOMEM; return -ENOMEM;