]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
smb: smbdirect: change smbdirect_socket_parameters.{initiator_depth,responder_resourc...
authorStefan Metzmacher <metze@samba.org>
Tue, 7 Apr 2026 14:46:27 +0000 (16:46 +0200)
committerSteve French <stfrench@microsoft.com>
Thu, 16 Apr 2026 02:58:24 +0000 (21:58 -0500)
We still limit this to U8_MAX as the rdma api only uses __u8
and that's also the limit for Infiniband and RoCE*,
while iWarp would be able to support larger values at
the protocol level.

As struct smbdirect_socket_parameters will be part
of the uapi for IPPROTO_SMBDIRECT in future, change it
now even if userspace sockets won't be supported yet.

Cc: Steve French <smfrench@gmail.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Long Li <longli@microsoft.com>
Cc: Namjae Jeon <linkinjeon@kernel.org>
Cc: David Howells <dhowells@redhat.com>
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Acked-by: Henrique Carvalho <henrique.carvalho@suse.com>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/common/smbdirect/smbdirect.h
fs/smb/common/smbdirect/smbdirect_socket.c

index e70a21eb57f01e258b44ec234b0afb3f7d64ba08..8fbffe3eb84538c38514c92c8196e527e7ef6418 100644 (file)
@@ -32,8 +32,8 @@ struct smbdirect_socket_parameters {
        __u32 resolve_route_timeout_msec;
        __u32 rdma_connect_timeout_msec;
        __u32 negotiate_timeout_msec;
-       __u8  initiator_depth;
-       __u8  responder_resources;
+       __u16 initiator_depth;     /* limited to U8_MAX */
+       __u16 responder_resources; /* limited to U8_MAX */
        __u16 recv_credit_max;
        __u16 send_credit_target;
        __u32 max_send_size;
index 1e3b361728cc9b4aa5638279f06dda2c06e181f8..4003753bea2619ea9242ed65f0a07ad88392ed97 100644 (file)
@@ -166,6 +166,11 @@ int smbdirect_socket_set_initial_parameters(struct smbdirect_socket *sc,
        if (sp->flags & ~SMBDIRECT_FLAG_PORT_RANGE_MASK)
                return -EINVAL;
 
+       if (sp->initiator_depth > U8_MAX)
+               return -EINVAL;
+       if (sp->responder_resources > U8_MAX)
+               return -EINVAL;
+
        if (sp->flags & SMBDIRECT_FLAG_PORT_RANGE_ONLY_IB &&
            sp->flags & SMBDIRECT_FLAG_PORT_RANGE_ONLY_IW)
                return -EINVAL;