Commit 2dc675f6 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Jason Gunthorpe
Browse files

RDMA/ucma: Fix rdma_ucm_query_ib_service_resp struct padding

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: 810f874e ("RDMA/ucma: Support query resolved service records")
Link: https://patch.msgid.link/r/20251208133311.313977-1-arnd@kernel.org


Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
parent 57f3cb6c
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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;
};