]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
RDMA/ucma: Fix rdma_ucm_query_ib_service_resp struct padding
authorArnd Bergmann <arnd@arndb.de>
Mon, 8 Dec 2025 13:33:05 +0000 (14:33 +0100)
committerJason Gunthorpe <jgg@nvidia.com>
Wed, 17 Dec 2025 01:37:02 +0000 (21:37 -0400)
On a few 32-bit architectures, the newly added ib_user_service_rec
structure is not 64-bit aligned the way it is on most regular ones.

Add explicit padding into the rdma_ucm_query_ib_service_resp and
rdma_ucm_resolve_ib_service structures that embed it, so that the layout
is compatible across all of them.

This is an ABI change on i386, aligning it with x86_64 and the other
64-bit architectures to avoid having to use a compat ioctl handler.

Fixes: 810f874eda8e ("RDMA/ucma: Support query resolved service records")
Link: https://patch.msgid.link/r/20251208133311.313977-1-arnd@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
include/uapi/rdma/rdma_user_cm.h

index 5ded174687ee045ee1144ac9b9ce00a55377449b..838f8d4602560365690294e6641dc65c286055e5 100644 (file)
@@ -192,6 +192,7 @@ struct rdma_ucm_query_path_resp {
 
 struct rdma_ucm_query_ib_service_resp {
        __u32 num_service_recs;
+       __u32 reserved;
        struct ib_user_service_rec recs[];
 };
 
@@ -354,7 +355,7 @@ enum {
 
 #define RDMA_USER_CM_IB_SERVICE_NAME_SIZE 64
 struct rdma_ucm_ib_service {
-       __u64 service_id;
+       __aligned_u64 service_id;
        __u8  service_name[RDMA_USER_CM_IB_SERVICE_NAME_SIZE];
        __u32 flags;
        __u32 reserved;
@@ -362,6 +363,7 @@ struct rdma_ucm_ib_service {
 
 struct rdma_ucm_resolve_ib_service {
        __u32 id;
+       __u32 reserved;
        struct rdma_ucm_ib_service ibs;
 };