Commit d8abb73f authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'v6.11-rc6-server-fixes' of git://git.samba.org/ksmbd

Pull smb server fixes from Steve French:

 - Fix crash in session setup

 - Fix locking bug

 - Improve access bounds checking

* tag 'v6.11-rc6-server-fixes' of git://git.samba.org/ksmbd:
  ksmbd: Unlock on in ksmbd_tcp_set_interfaces()
  ksmbd: unset the binding mark of a reused connection
  smb: Annotate struct xattr_smb_acl with __counted_by()
parents 4356ab33 844436e0
...@@ -1690,6 +1690,8 @@ int smb2_sess_setup(struct ksmbd_work *work) ...@@ -1690,6 +1690,8 @@ int smb2_sess_setup(struct ksmbd_work *work)
rc = ksmbd_session_register(conn, sess); rc = ksmbd_session_register(conn, sess);
if (rc) if (rc)
goto out_err; goto out_err;
conn->binding = false;
} else if (conn->dialect >= SMB30_PROT_ID && } else if (conn->dialect >= SMB30_PROT_ID &&
(server_conf.flags & KSMBD_GLOBAL_FLAG_SMB3_MULTICHANNEL) && (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB3_MULTICHANNEL) &&
req->Flags & SMB2_SESSION_REQ_FLAG_BINDING) { req->Flags & SMB2_SESSION_REQ_FLAG_BINDING) {
...@@ -1768,6 +1770,8 @@ int smb2_sess_setup(struct ksmbd_work *work) ...@@ -1768,6 +1770,8 @@ int smb2_sess_setup(struct ksmbd_work *work)
sess = NULL; sess = NULL;
goto out_err; goto out_err;
} }
conn->binding = false;
} }
work->sess = sess; work->sess = sess;
......
...@@ -624,8 +624,10 @@ int ksmbd_tcp_set_interfaces(char *ifc_list, int ifc_list_sz) ...@@ -624,8 +624,10 @@ int ksmbd_tcp_set_interfaces(char *ifc_list, int ifc_list_sz)
for_each_netdev(&init_net, netdev) { for_each_netdev(&init_net, netdev) {
if (netif_is_bridge_port(netdev)) if (netif_is_bridge_port(netdev))
continue; continue;
if (!alloc_iface(kstrdup(netdev->name, GFP_KERNEL))) if (!alloc_iface(kstrdup(netdev->name, GFP_KERNEL))) {
rtnl_unlock();
return -ENOMEM; return -ENOMEM;
}
} }
rtnl_unlock(); rtnl_unlock();
bind_additional_ifaces = 1; bind_additional_ifaces = 1;
......
...@@ -76,7 +76,7 @@ struct xattr_acl_entry { ...@@ -76,7 +76,7 @@ struct xattr_acl_entry {
struct xattr_smb_acl { struct xattr_smb_acl {
int count; int count;
int next; int next;
struct xattr_acl_entry entries[]; struct xattr_acl_entry entries[] __counted_by(count);
}; };
/* 64bytes hash in xattr_ntacl is computed with sha256 */ /* 64bytes hash in xattr_ntacl is computed with sha256 */
......
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