From: Stefan Metzmacher Date: Tue, 7 Apr 2026 14:46:27 +0000 (+0200) Subject: smb: smbdirect: change smbdirect_socket_parameters.{initiator_depth,responder_resourc... X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=735610d0cefa9e44b28498b53706ed2ebac3be27;p=thirdparty%2Fkernel%2Flinux.git smb: smbdirect: change smbdirect_socket_parameters.{initiator_depth,responder_resources} to __u16 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 Cc: Tom Talpey Cc: Long Li Cc: Namjae Jeon Cc: David Howells Cc: linux-cifs@vger.kernel.org Cc: samba-technical@lists.samba.org Acked-by: Henrique Carvalho Signed-off-by: Stefan Metzmacher Signed-off-by: Steve French --- diff --git a/fs/smb/common/smbdirect/smbdirect.h b/fs/smb/common/smbdirect/smbdirect.h index e70a21eb57f0..8fbffe3eb845 100644 --- a/fs/smb/common/smbdirect/smbdirect.h +++ b/fs/smb/common/smbdirect/smbdirect.h @@ -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; diff --git a/fs/smb/common/smbdirect/smbdirect_socket.c b/fs/smb/common/smbdirect/smbdirect_socket.c index 1e3b361728cc..4003753bea26 100644 --- a/fs/smb/common/smbdirect/smbdirect_socket.c +++ b/fs/smb/common/smbdirect/smbdirect_socket.c @@ -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;