Commit d8abb73f authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1690,6 +1690,8 @@ int smb2_sess_setup(struct ksmbd_work *work)
		rc = ksmbd_session_register(conn, sess);
		if (rc)
			goto out_err;

		conn->binding = false;
	} else if (conn->dialect >= SMB30_PROT_ID &&
		   (server_conf.flags & KSMBD_GLOBAL_FLAG_SMB3_MULTICHANNEL) &&
		   req->Flags & SMB2_SESSION_REQ_FLAG_BINDING) {
@@ -1768,6 +1770,8 @@ int smb2_sess_setup(struct ksmbd_work *work)
			sess = NULL;
			goto out_err;
		}

		conn->binding = false;
	}
	work->sess = sess;

+3 −1
Original line number Diff line number Diff line
@@ -624,9 +624,11 @@ int ksmbd_tcp_set_interfaces(char *ifc_list, int ifc_list_sz)
		for_each_netdev(&init_net, netdev) {
			if (netif_is_bridge_port(netdev))
				continue;
			if (!alloc_iface(kstrdup(netdev->name, GFP_KERNEL)))
			if (!alloc_iface(kstrdup(netdev->name, GFP_KERNEL))) {
				rtnl_unlock();
				return -ENOMEM;
			}
		}
		rtnl_unlock();
		bind_additional_ifaces = 1;
		return 0;
+1 −1
Original line number Diff line number Diff line
@@ -76,7 +76,7 @@ struct xattr_acl_entry {
struct xattr_smb_acl {
	int count;
	int next;
	struct xattr_acl_entry entries[];
	struct xattr_acl_entry entries[] __counted_by(count);
};

/* 64bytes hash in xattr_ntacl is computed with sha256 */