This is a note to let you know that I've just added the patch titled ksmbd: set both ipv4 and ipv6 in FSCTL_QUERY_NETWORK_INTERFACE_INFO to the 5.15-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: ksmbd-set-both-ipv4-and-ipv6-in-fsctl_query_network_interface_info.patch and it can be found in the queue-5.15 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From stable+bounces-7640-greg=kroah.com@xxxxxxxxxxxxxxx Mon Dec 18 16:36:25 2023 From: Namjae Jeon <linkinjeon@xxxxxxxxxx> Date: Tue, 19 Dec 2023 00:32:31 +0900 Subject: ksmbd: set both ipv4 and ipv6 in FSCTL_QUERY_NETWORK_INTERFACE_INFO To: gregkh@xxxxxxxxxxxxxxxxxxx, stable@xxxxxxxxxxxxxxx Cc: smfrench@xxxxxxxxx, Namjae Jeon <linkinjeon@xxxxxxxxxx>, Steve French <stfrench@xxxxxxxxxxxxx> Message-ID: <20231218153454.8090-12-linkinjeon@xxxxxxxxxx> From: Namjae Jeon <linkinjeon@xxxxxxxxxx> [ Upstream commit a58b45a4dbfd0bf2ebb157789da4d8e6368afb1b ] Set ipv4 and ipv6 address in FSCTL_QUERY_NETWORK_INTERFACE_INFO. Signed-off-by: Namjae Jeon <linkinjeon@xxxxxxxxxx> Signed-off-by: Steve French <stfrench@xxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- fs/ksmbd/smb2pdu.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) --- a/fs/ksmbd/smb2pdu.c +++ b/fs/ksmbd/smb2pdu.c @@ -7328,15 +7328,10 @@ static int fsctl_query_iface_info_ioctl( struct sockaddr_storage_rsp *sockaddr_storage; unsigned int flags; unsigned long long speed; - struct sockaddr_in6 *csin6 = (struct sockaddr_in6 *)&conn->peer_addr; rtnl_lock(); for_each_netdev(&init_net, netdev) { - if (out_buf_len < - nbytes + sizeof(struct network_interface_info_ioctl_rsp)) { - rtnl_unlock(); - return -ENOSPC; - } + bool ipv4_set = false; if (netdev->type == ARPHRD_LOOPBACK) continue; @@ -7344,6 +7339,12 @@ static int fsctl_query_iface_info_ioctl( flags = dev_get_flags(netdev); if (!(flags & IFF_RUNNING)) continue; +ipv6_retry: + if (out_buf_len < + nbytes + sizeof(struct network_interface_info_ioctl_rsp)) { + rtnl_unlock(); + return -ENOSPC; + } nii_rsp = (struct network_interface_info_ioctl_rsp *) &rsp->Buffer[nbytes]; @@ -7376,8 +7377,7 @@ static int fsctl_query_iface_info_ioctl( nii_rsp->SockAddr_Storage; memset(sockaddr_storage, 0, 128); - if (conn->peer_addr.ss_family == PF_INET || - ipv6_addr_v4mapped(&csin6->sin6_addr)) { + if (!ipv4_set) { struct in_device *idev; sockaddr_storage->Family = cpu_to_le16(INTERNETWORK); @@ -7388,6 +7388,9 @@ static int fsctl_query_iface_info_ioctl( continue; sockaddr_storage->addr4.IPv4address = idev_ipv4_address(idev); + nbytes += sizeof(struct network_interface_info_ioctl_rsp); + ipv4_set = true; + goto ipv6_retry; } else { struct inet6_dev *idev6; struct inet6_ifaddr *ifa; @@ -7409,9 +7412,8 @@ static int fsctl_query_iface_info_ioctl( break; } sockaddr_storage->addr6.ScopeId = 0; + nbytes += sizeof(struct network_interface_info_ioctl_rsp); } - - nbytes += sizeof(struct network_interface_info_ioctl_rsp); } rtnl_unlock(); Patches currently in stable-queue which might be from kroah.com@xxxxxxxxxxxxxxx are queue-5.15/ksmbd-remove-unused-parameter-from-smb2_get_name.patch queue-5.15/ksmbd-smbd-handle-multiple-buffer-descriptors.patch queue-5.15/ksmbd-add-mnt_want_write-to-ksmbd-vfs-functions.patch queue-5.15/ksmbd-delete-an-invalid-argument-description-in-smb2_populate_readdir_entry.patch queue-5.15/ksmbd-remove-smb2_buf_length-in-smb2_transform_hdr.patch queue-5.15/ksmbd-fix-smb2_set_info_file-kernel-doc-comment.patch queue-5.15/ksmbd-remove-unused-fields-from-ksmbd_file-struct-definition.patch queue-5.15/ksmbd-set-445-port-to-smbdirect-port-by-default.patch queue-5.15/ksmbd-use-ksmbd_req_buf_next-in-ksmbd_verify_smb_message.patch queue-5.15/ksmbd-set-both-ipv4-and-ipv6-in-fsctl_query_network_interface_info.patch queue-5.15/ksmbd-reduce-descriptor-size-if-remaining-bytes-is-less-than-request-size.patch queue-5.15/ksmbd-fix-smb2_get_name-kernel-doc-comment.patch queue-5.15/ksmbd-register-ksmbd-ib-client-with-ib_register_client.patch queue-5.15/ksmbd-smbd-fix-missing-client-s-memory-region-invalidation.patch queue-5.15/ksmbd-fix-parameter-name-and-comment-mismatch.patch queue-5.15/ksmbd-smbd-call-rdma_accept-under-cm-handler.patch queue-5.15/ksmdb-use-cmd-helper-variable-in-smb2_get_ksmbd_tcon.patch queue-5.15/ksmbd-smbd-change-the-default-maximum-read-write-receive-size.patch queue-5.15/ksmbd-smbd-remove-useless-license-text-when-spdx-license-identifier-is-already-used.patch queue-5.15/ksmbd-check-the-validation-of-pdu_size-in-ksmbd_conn_handler_loop.patch queue-5.15/ksmbd-fix-buffer_check_err-kernel-doc-comment.patch queue-5.15/ksmbd-remove-redundant-flush_workqueue-calls.patch queue-5.15/ksmbd-smbd-create-mr-pool.patch queue-5.15/ksmbd-remove-smb2_buf_length-in-smb2_hdr.patch queue-5.15/ksmbd-remove-md4-leftovers.patch queue-5.15/ksmbd-add-smb-direct-shutdown.patch